linux备份的命令 linux备份命令mv

linux下备份一个目录下所有文件及目录,应该用什么命令?这里教大家如何用find、xargs和tar命令完成上面的功能 。
建立一个测试环境,新建几个文件
# cd /tmp
# mkdir test
# cd test
# touch a.php b.js c.css 1.png
# ls
【linux备份的命令 linux备份命令mv】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下数据备份命令scp、rsync和后台运行 scp和rsync 均可实现文件的复制linux备份的命令 , 但相比较,scp占用系统资源较?。瑀sync速度较快 。当小文件众多时,rsync会导致硬盘I/O非常高,而scp基本不影响系统正常使用 。可根据需要这俩选其一实现文件复制 。
scp 是secure copy的缩写,scp是Linux系统下基于ssh登录进行安全的远程文件拷贝命令 。
可以实现本地文件复制到远程服务器,也可以将远程文件复制到本地 。
rsync 是remote sync的缩写 。使用rsync备份数据时,不会直接覆盖以前的数据(如果数据已经存在) , 而是先判断已存在的数据和新数据的差异(默认规则是文件大小或修改时间有差异),只有数据不相同时才会把不相同的部分覆盖 。在仅作增量数据的copy时比scp灵活 。
一般CentOS默认安装rsync,若使用rsync -v 提示找不到命令,可使用 yum install -y rsync 安装 。
单个冒号和双冒号的区别 :使用rsync在远程传输数据前,是需要进行登陆认证的,这个过程可使用ssh协议也可以使用rsync协议完成 。单冒号(:)使用的是ssh协议linux备份的命令;双冒号(::)使用的是rsync协议 。
默认情况下,rsync只确保源文件的所有内容(明确排除的文件除外)都复制到目标目录 。它不会使两个目录保持不同,并且不会删除文件 。如果要使目标目录成为源目录的镜像副本,则使用--delete选项 。可删除只存在目标目录 , 不存在于源目录的文件 。
增量备份算是一个经常使用的场景了 。两台服务器之间进行文件定期备份 , 无需所有文件都copy一遍 , 仅复制有变动的文件 。
具体做法是,第一次同步是全量备份,所有文件在基准目录里面同步一份 。以后每一次同步都是增量备份 , 只同步源目录与基准目录之间有变动的部分,将这部分保存在一个新的目标目录 。这个新的目标目录之中 , 也是包含所有文件,但实际上,只有那些变动过的文件是存在于该目录,其linux备份的命令他没有变动的文件都是指向基准目录文件的硬链接 。
--link-dest 参数用来指定同步时的基准目录 。

推荐阅读