User:Rogerhc/Backup trail
How I backup my wikigogy stuff. Don't copy me; I don't know what I am doing! Instead see Manual:Backup
Server side
[edit]tar
[edit]This grabs everything except the data base, and most importantly it contains /images
tar -cpvf wikigogy.org.tar wikigogy.org/
Copy that tar file to a safe drive at home.
mysqldump
[edit]This grabs the database
I use:
mysqldump -p roger_orange > roger_orange.`date +%Y-%m-%d`.sql
Use --skip-opt ? I don't know what that does. Not using it right now.
Then copy ~/BU/wikigogy.____-__-__.sql to another box for safekeeping with scp or, as I do below, with rsync.
- See m:Database dump and restore examples
- man mysqldump
- I have not investigated mixing in incremental dumps yet but eventually I will need to, to save space.
mysql
[edit]To revert to a saved version:
mysql -p roger_orange < file.sql
WARNING! This overwrites your database with file.sql -- handle with care!
cronjob
[edit]I have not set this up yet but it could run the mysqldump automatically say once a day.
Safekeeping box side
[edit]Do a fresh mysqldump on the server side first, see above.
Then do rsync, below, on the safekeeping box to move that fresh mysqldump to safekeeping.
I initiate rsync from the safekeeping box (at home) instead of from the server (at the data center) simply because my safekeeping box does not have a static ip address and thus I don't know how to access it from the server, but I can access the server from my desktop box easily because the server does have a static ip address.
scp
[edit]This on home box, without those spaces in s c p:
s c p roger@wikigogy.org:roger_wgdb.2010-01-12.sql .
or use rsync.
rsync
[edit]Run my
~/BU-Dreamhost-rsync.sh
It is a shell script containing the following bash commands (which run rsync on the safekeeping box to copy stuff from the server):
Maybe this?: rsync -av --delete --stats --progress m2_cn@wikigogy.org:/home/m2_cn /home/roger/BU-Dreamhost-rsync/home..m2_cn/ cp -R /home/roger/BU-Dreamhost-rsync/ /home/roger/BU-Dreamhost-rsync.`date+%Y-%m-%d`
- The last line cans and dates the stuff so it wont get overwritten next time, in case I need to revert to a previous date to recover from some screw up or vandalism on the server.
Thumb drive
[edit]rsync -a --delete --stats --progress /home/roger/a /media/danube
Note re trailing slashes on directories, when rsync'ing directories
'src/dir -> dest' okay.
'src/dir/ -> dest/dir' okay, contents of src/dir/ go into dest/dir. You may like a different dest/dir-name.
'src/dir/ -> dest/dir/' okay, does same as above. ??However, --delete will not remove first level dest/dirs here.??
'src/dir/ -> dest' oops! dumps contents of dir/ into dest/ without dir/! Messy! Okay if you want it.
'src/dir/ -> dest/' oops! same as above.
'src/dir -> dest/dir' oops! duplicates /dir within /dir (ie dest/dir/dir)! Messy! Okay if you want it.
'src/dir -> dest/dir/' oops! same as above.
Sashes after dir names? Here's what 'man rsync' USAGE section says:
rsync -avz foo:src/bar /data/tmp This would recursively transfer all files from the directory src/bar on the machine foo into the /data/tmp/bar directory on the local machine. The files are transferred in "archive" mode, which ensures that symbolic links, devices, attributes, permissions, ownerships, etc. are preserved in the transfer. Additionally, compression will be used to reduce the size of data portions of the trans‐ fer. rsync -avz foo:src/bar/ /data/tmp A trailing slash on the source changes this behav‐ ior to avoid creating an additional directory level at the destination. You can think of a trailing / on a source as meaning "copy the contents of this directory" as opposed to "copy the directory by name", but in both cases the attributes of the con‐ taining directory are transferred to the containing directory on the destination. In other words, each of the following commands copies the files in the same way, including their setting of the attributes of /dest/foo:
More about rsync and slashes -> http://defindit.com/readme_files/rsync_backup.html
'cp' command however does _not_ seem to have that last feature, the trailing slash on source dir to prevent recreating it in destination dir, per my tests on 2010-10-17
Note group and owner might only be preserved if rsync is run as sudo or super user. See -g and -o below.
- --stats
- This tells rsync to print a verbose set of statistics on the file transfer, allowing you to tell how effective rsync’s delta-transfer algorithm is for your data.
- --delete
- This tells rsync to delete extraneous files from the receiving side (ones that aren’t on the sending side), but only for the directories that are being synchronized. You must have asked rsync to send the whole directory (e.g. "dir" or "dir/") without using a wildcard for the directory’s contents (e.g. "dir/*") since the wildcard is expanded by the shell and rsync thus gets a request to transfer individual files, not the files’ parent directory. Files that are excluded from the transfer are also excluded from being deleted unless you use the --delete-excluded option or mark the rules as only matching on the sending side (see the include/exclude modifiers in the FILTER RULES section).
- --progress
- This option tells rsync to print information showing the progress of the transfer. This gives a bored user something to watch. Implies --verbose if it wasn’t already specified.
- -a
- Archive mode, equivalent to -rlptgoD
- -r, --recursive
- This tells rsync to copy directories recursively. See also --dirs (-d).
- -l, --links
- When symlinks are encountered, recreate the symlink on the destination.
- -p, --perms
- Preserve permissions
- -t, --times
- Preserve modification times
- -g, --group
- This option causes rsync to set the group of the destination file to be the same as the source file. If the receiving program is not running as the super-user (or if --no-super was specified), only groups that the invoking user on the receiving side is a member of will be preserved. Without this option, the group is set to the default group of the invoking user on the receiving side.
The preservation of group information will associate matching names by default, but may fall back to using the ID number in some circumstances (see also the --numeric-ids option for a full discussion).
- -o, --owner
- This option causes rsync to set the owner of the destination file to be the same as the source file, but only if the receiving rsync is being run as the super-user (see also the --super and --fake-super options). Without his option, the owner of new and/or transferred files are set to the invoking user on the receiving side.
The preservation of ownership will associate matching names by default, but may fall back to using the ID number in some circumstances (see also the --numeric-ids option for a full discussion).
- -D
- --devices --specials
- --devices
- This option causes rsync to transfer character and block device files to the remote system to recreate these devices. This option has no effect if the receiving rsync is not run as the super-user (see also the --super and --fake-super options).
- --specials
- This option causes rsync to transfer special files such as named sockets and fifos.
cronjob
[edit]I have not set this up yet but it could run the rsync automatically say once a day.
man cron man cronjob