linux里备份命令 linux备份系统命令( 二 )


具体做法是,第一次同步是全量备份,所有文件在基准目录里面同步一份 。以后每一次同步都是增量备份,只同步源目录与基准目录之间有变动的部分,将这部分保存在一个新的目标目录 。这个新的目标目录之中,也是包含所有文件 , 但实际上,只有那些变动过的文件是存在于该目录,其他没有变动的文件都是指向基准目录文件的硬链接 。
--link-dest 参数用来指定同步时的基准目录 。
上面命令中,--link-dest 参数指定基准目录 /compare/path ,然后源目录 /source/path 跟基准目录进行比较 , 找出变动的文件,将它们拷贝到目标目录 /target/path。那些没变动的文件则会生成硬链接 。这个命令的第一次备份时是全量备份,后面就都是增量备份了 。
一般服务器之间复制文件都比较大,为防止误操作,最好在后台运行 。但因为需要和远程服务器之间的ssh通讯多是需要密码的,所以不能直接使用nohup 放置于后台 。无论是scp还是rsync都可操作如下:
后台和前台任务的切换
scp不支持断点续传 , 挂起scp进程可能导致数据缺失 。倾向于使用rsync 。
如果有其他任务需要使用nohup后台运行,但执行时却忘记了使用nohup,也可参照此方法进行设置 。
参考:1.Linux之scp命令及后台运行scp
linux下备份一个目录下所有文件及目录,应该用什么命令?这里教大家如何用find、xargs和tar命令完成上面的功能 。
建立一个测试环境,新建几个文件
# cd /tmp
# mkdir test
# cd test
# touch a.php b.js c.css 1.png
# ls
1.pnga.phpb.jsc.css
接下来,通过find命令找出指定后缀的文件,为了支持多个后缀文件 , find命令用到了正则匹配
# find . -type f -regex ".*\.\(php\|js\|css\)"
./b.js
./a.php
./c.css
-regex后面的参数看起来很复杂,其实很简单,我来做个解释 , 双引号就不需要解释了吧
.*\.\(php\|js\|css\) 简化一下就是.*.(php|js|css),其实就是对.()|做了下转义而已,开头的.*匹配除换行符外的任意字符(这个懂正则表达式的应该都明白)
找出文件后 , 就是如何备份这些文件了,tar需要指定源文件 , 怎么获取find出来的这些文件,并传给tar呢 , xargs的作用就来了 。看到下面xargs输出的是什么了吧,这个正是tar需要的 。
# find . -type f -regex ".*\.\(php\|js\|css\)" | xargs
./b.js ./a.php ./c.css
# find . -type f -regex ".*\.\(php\|js\|css\)" | xargs tar czvf test.tar.gz
./b.js
./a.php
./c.css
下面看看文件是否备份成功了
# tar tzvf test.tar.gz
-rw-r--r-- root/root0 2014-03-14 10:38 ./b.js
-rw-r--r-- root/root0 2014-03-14 10:37 ./a.php
-rw-r--r-- root/root0 2014-03-14 10:38 ./c.css
linux系统如何备份?做法是:
1、在保存备份文件的目录 xxx 下建立一个文件 backup.sh , 其内容是:
tar -zcf bin.tar.gz /bin
tar -zcf boot.tar.gz /boot
tar -zcf dev.tar.gz /dev
tar -zcf etc.tar.gz /etc
tar -zcf lib32.tar.gz /lib32
tar -zcf lib64.tar.gz /lib64
tar -zcf lib.tar.gz /lib
tar -zcf opt.tar.gz /opt
tar -zcf sbin.tar.gz /sbin
tar -zcf selinux.tar.gz /selinux
tar -zcf srv.tar.gz /srv
tar -zcf var.tar.gz /var
tar -zcf usr.tar.gz /usr
2、在需要备份的时候进入到保存备份内容的目录执行一次命令: sh backup.sh
3、在保存备份文件的目录 xxx 下建立一个叫 restore.sh 的文件,其内容如下:
tar -zxf /mnt/xxx/bin.tar.gz
tar -zxf /mnt/xxx/boot.tar.gz
tar -zxf /mnt/xxx/dev.tar.gz
tar -zxf /mnt/xxx/etc.tar.gz

推荐阅读