1. rsycn 是什么

rsycn最大特点是可以检查本地和远程的文件差异, 只上传变动的文件. sftp 是全量上传.

rsycn 会用在上传图片到Nginx服务器上, 作为图床使用

2. rsycn安装

Mac

brew install rsycn

Linux

yum install rsycn

Windows

choco install rsycn

3. rsycn 命令

-r 参数, 递归同步, 同步文件夹时使用

rsycn -r source destination

-a 参数, 除了可以递归同步以外,还可以同步元信息(比如修改时间、权限等).

rsycn -a source destination

-u 跳过目标目录比源目录修改时间新的文件, 不同步这些文件

rsycn -ru source destination

-t 保留文件的修改时间

rsycn -aut source destination

–exclude 排除某些文件

rsycn -aur --exclude '.DS_Store' source destination

–include 与–exclude连用

rsycn -aur --exclude '*' --include "readme.md" source destination

–delete 删除目标目录中与源目录不一致文件

rsync -aut --delete --exclude '.DS_Store' source destination

4. 与ssh key连用, 上传到服务器上

4.1 配置ssh key

ssh-keygen -t ed25519

生成密钥

生成密钥

ls查看生成的密钥

ls查看生成的密钥

# 输入对应root用户密码即可完成
ssh-copy-id -i ~/.ssh/test.pub root@192.168.1.100  -p 22

添加如下配置, 用户名 端口 ip与上面一致, 私钥则是test

Host myhost
 User root
 Port 22
 HostName 192.168.1.100
 PreferredAuthentications publickey
 IdentityFile ~/.ssh/test

如下内容放到~/.zshrc或~/.bashrc中

把本地~/Pictures/s.lizicai.com/下子文件文件夹上传到myhost的root用户根目录s.lizicai.com/目录中

myhost名称是步骤3中的Host名称

upli(){
    LOCAL_PATH="${HOME}/Pictures/s.lizicai.com/"
    SERVER_PATH="s.lizicai.com/"
    echo "\033[42;30m Begin rsync ${LOCAL_PATH} myhost:${SERVER_PATH}...  \033[0m"
    rsync -aut --delete --exclude '.DS_Store' ${LOCAL_PATH} myhost:${SERVER_PATH}
    echo "\033[42;30m Finash.  \033[0m"
}
source ~/.zshrc
# 或source ~/.bashrc, 取决使用哪种shell
upli
上传图片或资源

上传图片或资源