常用Rsync实例

11/5/2021 #rsync

rsync是一个非常强大的传输和同步文件的命令行工具, 支持压缩传输递归复制

常用选项 功能
-u, --update 不传输已存在的非更新(newer)的文件
--progress 显示传输进度
-z, --compress 启用压缩
--exclude 不传送这个选项后的文件或文件夹
--delete 通常rsync只做增量传输,这个选项让你删除目标文件夹的多余文件
-r, --recursive 包含子文件夹的文件
  1. folder1下的所有文件复制到folder2, 不包括文件夹

    $ rsync folder1/* folder2/
    
  2. folder1下的所有文件复制到folder2, 包括文件夹

    $ rsync -r folder1/ folder2/
    

    注意如果去掉folder1后的/,将会把folder1整个复制到folder2下, 也就是folder2/folder1

  3. 同2,复制到远程位置,

    $ rsync -r folder1/ [email protected]:~/folder2
    

    默认为ssh的22端口,如果是其他端口需要

    $ rsync -r -e "ssh -p 3322" folder1/ [email protected]:~/folder2
    

    但是这样的写法很复杂, 如果在~/.ssh/config里面加入

    Host remote
    User remoteuser
    Hostname xxx.xxx.xxx.xxx
    Port 3322
    

    就可以写为

    $ rsync -r folder1/ remote:~/folder2
    
  4. 同3,将远程位置复制到本地,同时删除本地多余的文件

    $ rsync -r --delete remote:~/folder1 folder2/ 
    
  5. 复制本地folder1remote上的folder2,无视.node_modules文件夹, 显示传输进度, 并启用压缩

    $ rsync -rz --progress --exclude node_modules folder1/ remote:~/folder2