一、scp引出的麻烦
公司桌面迁移,从win7迁移到linux.
需要自行迁移数据,于是在windows上用 mobaxterm 开启了一个 sshd 服务。
在 linux 执行:
scp -r -P 2222 user@192.168.1.3:/cygdrive/d/escape ./
然后就静静的等,等它同步完成。
等了一天一夜,终于结束。但是很奇怪。
linux预留空间是290G,win7上的文件夹是160G,怎么现在Linux硬盘满了,显然同步还没有完成。
于是百度一番,原来 scp 确实存在这样的问题,主要是自己对各参数不精通。默认情况下它会给空目录分配空间,造成空间变大
然后改用人家推荐的 rsync 来同步:
rsync -avzP -e 'ssh -p 2222' --progress --delete user@192.168.1.3:/cygdrive/d/escape ./
发现其同步速度比 scp 要快太多
rsync 多种参数配置
rsync -avvz --times --stats --checksum --human-readable --acls \
--itemize-changes --progress \
--out-format='[%t] [%i] (Last Modified: %M) (bytes: %-10l) %-100n' \
/usr/include/glib-2.0 my-glib-copy/
个参数意义解释如下:
> -avvz = archive,verbose x 2,compress
> –times =保留修改时间
> –stats =提供一些文件传输统计信息
> –checksum =基于校验和跳过,而非mod-time&尺寸
> –human-readable =以人类可读格式输出的数字
> –acls =保留ACL(隐含-p)
> –itemize-changes =输出所有更新的更改摘要
> –progress =显示转移期间的进度
> –out-format ='[%t] [%i](上次修改时间:%M)(字节:%-10l)%-100n’
>%t =当前日期时间
>%i =正在更新的内容的逐项清单
>%M =文件的上次修改时间
>%-10l =文件的长度(以字节为单位)(-10表示对齐和精度)
>%-100n =文件名(短格式;在目录上尾随“/”)( – 100表示对齐和精度)
注意:有关上述开关的完整详细信息,请参见rsync和rsyncd.conf的手册页.
上面的命令产生以下脚本: