How do I append current date (mm_dd_yyyy format) to a filename (e.g., backup_mm_dd_yyyy.sql) under UNIX like operating systems?
To get the current date in mm_dd_yyyy format use the following date format syntax:
date +"%m_%d_%Y" |
You can store this to a variable name:
now=$(date +"%m_%d_%Y") |
OR
now=`date +"%m_%d_%Y"` |
Finally, you can create a filename as follows:
now=$(date +"%m_%d_%Y") echo "Filename : /nas/backup_$now.sql" |
Sample outputs:
Filename : /nas/backup_04_27_2010.sql
You can create a shell script as follows:
#!/bin/bash _now=$(date +"%m_%d_%Y") _file="/nas/backup_$_now.sql" echo "Starting backup to $_file..." # mysqldump -u admin -p'myPasswordHere' myDbNameHere > "$_file" |



17 comment
great tip, it will be handy one day…
nice!
Thanks. This was really handy reference.
Thank you, just used this to save a version of my thesis every time I compile the .tex into a .pdf.
Yeah, finally found it. Thank you!
This is not working for me.
It always says “date: zusätzlicher Operand „%Y-%m-%d“”, which means “date: extra operand „%Y-%m-%d“” or something like that.
here is my script:
#! /bin/bash
current_date=$(date + “%Y-%m-%d)
file=”/mnt/Daten/piBackup/Arch${current_date}.img”
echo “Starting backup to $file…”
dd bs=1M if=/dev/mmcblk0 |pv| dd of=$file
You know what i’ve done wrong?
There should not be a whitespace between + and the format string on line 3. Change $(date + “%Y-%m-%d”) to $(date +”%Y-%m-%d”).
Great blog post! Thank you very much!
I wrote the following script to save the screenshots with date and time in the filename similar as in Mac OS X:
You can also avoid the bash shell altogether and put the one line in your crontab like:
Brilliant, elegant, thanks so much
Try this on for size, in bash:
——
bkup ()
{
## shell function, placed in your profile
STAMP=`date +%m%d%y-%H%M%S`
cp -i ${1}{,.${BKUP_DATE_STAMP}}
}
——
Place the above function in your .profile or .bash_profile or .bashrc. Wherever you like or paste it into a command line on the terminal. Then use it like this:
touch name.conf
bkup name.conf
To check and see if it worked,
ls -l name.conf*
The advantage to this approach is that if you are backing up a file in a subdirectory:
bkup /path/to/the/file/name.conf
ls -l /path/to/the/file/name.conf*
-rw-r–r– 1 unixDude unixDude 0 Sep 13 21:21 /path/to/the/file/name.conf
-rw-r–r– 1 unixDude unixDude 0 Sep 13 21:23 /path/to/the/file/name.conf.091314-211838
Now, the challenge is to backup the file and then vi it or what you will, within the same function.
UD-
ERROR:
STAMP=`date +%m%d%y-%H%M%S`
should be:
BKUP_DATE_STAMP=`date +%m%d%y-%H%M%S`
Or, what you want as long as it matches.
I am very newbie about bash.
Why there’s a plus sign in front of the pattern?
date +”%m_%d_%Y”
Thanks
man date
How do you put a string and the date in one line, e.g.
MyDate=’Mystring’ date +”%Y-%m-%d_%H.%m”
echo $MyDate
I know it’s not working, but how do you do that?
Try:
Awesome. Your final example was almost exactly what I needed.