LINUX - Beginner - Bash/Script with Date for Copy Backup - Adding Timestamp

BASH/SCRIPT EXAMPLE TO ADD TIME STAMP TO FILE

#############################################


Try this Command - 2 ways - sometimes better to use commands full name just incase another exists somewhere:

# date --help

(or)

# /bin/date --help


TRY THESE COMMANDS LIKE THIS SO YOU SEE WHY ITS SO LONG IN THE END:

# date +%s

1362732681 - time since unix epoch (1970-01-01 UTC) - its a universal time we can all measure from

# date +%T

00:52:35

# date +%D

03/08/13

# date +s%s

s1362732770 <-- would do as a good timestamp even without the "s" in the front

# date +s%s-D%D

s1362732786-D03/08/13

# date +s%s-D%D-T%T-%S

s1362732791-D03/08/13-T00:53:11-11

# date +s%s-D%D-T%T-%S | tr "/" "_" 

s1362732796-D03_08_13-T00:53:16-16

# date +s%s-D%D-T%T-%S | tr "/" "_" | tr ":" "_"

s1362732801-D03_08_13-T00_53_21-21 <-- Good long timestamp


WE CAN PREFIX IT WITH /bin  JUST TO BE SAFE

# date +s%s-D%D-T%T-%S | tr "/" "_" | tr ":" "_"

(or)

# /bin/date +s%s-D%D-T%T-%S | tr "/" "_" | tr ":" "_"


SO PUT THAT INTO A VARIABLE - those ` are backticks they make commands inside em run then you can use the text as the variable (or part of the variable):

# DATEnow=`/bin/date +s%s-D%D-T%T-%S | tr "/" "_" | tr ":" "_"`


VERIFY - LOTS OF WAYS TO CALL VARIABLE:

# echo $DATEnow


SET ANOTHER VARIABLE WITH IT:

# FILENAME=/tmp/somefile-${DATEnow}

(or)

# FILENAME=/tmp/somefile-$DATEnow

(or without using DATEnow)

# FILENAME=/tmp/somefile-`/bin/date +s%s-D%D-T%T-%S | tr "/" "_" | tr ":" "_"`


Type "echo $FILENAME" to confirm at anytime.


NOW YOU CAN USE FILENAME AS VARIABLE IN ANY FUNCTION LIKE MAYBE A COPY SCRIPT:

REMEMBER EACH SCRIPT STARTS WITH A SHABANG(#!/bin/bash) TELLS LINUX WHICH INTERPRETER TO USE FOR THE SCRIPT- ITS A COMMENT SO IT DOESNT AFFECT THE CODE - JUST WHO RUNS THE CODE

# cd /tmp

# touch script.sh

# chmod 777 script.sh

(or  WE JUST NEED EXECUTION BIT ON IT TO RUN [without execution bit you can still run script in bash like so "source scriptfilename")

nano is a simple file editor - i dont like it but its simple so its good for beginners - i just think beginners should start with vi though to get better at linux typing

# nano script.sh

(or my personal favorite vi)

# chmod +x script.sh

When you start vi you start in normal mode - you cant type just yet. Then key the letter "i" to start TYPING - insert mode. When done use "ESC" key to get get out of insert mode. When out of insert mode your in normal mode - just as when you entered vi - to SAVE Type the following ":w" Without the quotes (SHIFT+; to get the : and then key the letter w and then hit enter) - to SAVE AND EXIT ":wq!" - to EXIT AND NOT SAVE ":q!" - note the ! forces the commands without it you would be fine too, google "how to use vi" also google "how to install vim" and then use vim instead of vi - its just like vi but with more features - vi is just on every system so thats why I talk about it here

# vi script.sh

PUT THE FOLLOWING IN YOUR SCRIPT (when done can execute script like this "./script.sh" when in tmp folder - if out of tmp folder do "./tmp/script.sh" - both without quotes -- also make sure that you dont put # anywhere besides the shebang - it actually doesnt hurt at all to put # its just a comment line thus it will ignore commands so thats why Im not including it with the actual commands):

#!/bin/bash

DATEnow=`/bin/date +s%s-D%D-T%T-%S | tr "/" "_" | tr ":" "_"`

SOURCEFILE=/tmp/somefile

DESTINATIONFILE=/tmp/somefolder/newfile-${DATEnow}

echo "THE FOLLOWING COMMAND JUST RAN: " cp "$SOURCEFILE" "$DESTINATIONFILE"

cp "$SOURCEFILE" "$DESTINATIONFILE"


Comments