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查看生成的密钥
# 输入对应root用户密码即可完成
ssh-copy-id -i ~/.ssh/test.pub [email protected] -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

上传图片或资源