rsync
Linux下的同步文件非常多,可以根据不同的场景选择合适的工具。rsync,是用来跟远程机器,进行同步文件的工具,可以增量同步,即,已经下载的文件,不会重复的传递。(增量的含义是,已有的不会重复同步)
顺便讲一下,其他方式,如scp、python -m SimpleHTTPServer 8080、lrzsz、ftp、samba等等,每种适合的场景略有不同。
核心用法:
rsync -av -e 'ssh -p 22022' thumb/ root@10.182.1.3:/home/wwwroot/default/thumb
注意,thumb/结尾带不带斜杆,差别较大。简单理解:带斜杆,当成文件夹,把文件夹下面的所有文件拷贝到目标目录中。(不会多层级)。不带斜杆,即当作文件,经其直接拷贝到目标目录中。(会多层级)
示例
将本地的cloud文件夹拷贝到远程的/root目录下。(目录不存在,会自动创建) mkdir没有加 -p ???
h93在本地/etc/hosts配置好了ip。
rsync -r cloud root@h93:/root/cloud
主要参数:
-r 递归
v 类似tar中的v的含义,显示详细。
–process 显示进度。
a 文件的时间信息保留一致?
示例2
将thumb/下的文件拷贝到thumb。
mycp.sh
rsync -av -e 'ssh -p 22022' thumb/ root@10.182.1.3:/home/wwwroot/default/thumb
-v 显示详细的内容
-a 跟 -r的作用一样,能递归的同步文件。但是呢,能保持原有的权限、时间信息。
-e 指定使用ssh来作为传递数据的通道,并可以在此制定端口。
将/mnt/data/down拷贝到 down目录下,即down/down,为啥有这样的区别呢?难道是第一各地址,末尾有无/,造成的吗?
rsync -av -e 'ssh -p 22022' root@10.182.1.3:/mnt/data/down down