1. 上次用nginx做了静态资源, 图片图床. 同步是个问题.

  1. 单纯使用scp每次传输, 覆盖文件, 文件更新时间就没了.
  2. 思考有没有更好的工具.

2. 网上查询发现rsync, 同步神器了.

安装, Homebrew.

brew install rsync

参数解释-r目录递归,u增量更新(本地文件时间比上标文件新才更新), t保留修改时间. –exclude排除文件

在本地删除文件后, rsync同步到服务器端时是不会删除对应的文件的, 需要加上参数–delete, 会删除服务端比本地多余的文件, 重要文件同步谨慎使用.

${HOME}/Pictures/img/表示上传img文件夹下的所有文件, 不上传img. ${HOME}/Pictures/img表示上传img这个文件夹. 所以这个要注意

vim .zshrc


alias up="rsync -rut --exclude '.DS_Store'"

uponestoblog(){
    echo "\033[42;30m Begin rsync Files...  \033[0m"
    SERVER_PATH="img/blog/"
    for i in "[email protected]"; do
        rsync -rut --exclude '.DS_Store' $i b:${SERVER_PATH}
    done
}
upblog(){
    LOCAL_PATH="${HOME}/Pictures/img/blog/"
    SERVER_PATH="img/blog/"
    echo "\033[42;30m Begin rsync ${LOCAL_PATH} b:${SERVER_PATH}...  \033[0m"
    rsync -rut --exclude '.DS_Store' ${LOCAL_PATH} b:${SERVER_PATH}
    echo "\033[42;30m Finash.  \033[0m"
}

upimg(){
    LOCAL_PATH="${HOME}/Pictures/img/"
    SERVER_PATH="img/"
    echo "\033[42;30m Begin rsync ${LOCAL_PATH} b:${SERVER_PATH}...  \033[0m"
    rsync -rut --exclude '.DS_Store' ${LOCAL_PATH} b:${SERVER_PATH}
    echo "\033[42;30m Finash.  \033[0m"
}

重新生效.zshrc

source .zshrc

3. 开心上传图床了, 平时用的就几个文件夹, 需要参数化嘛😃

使用alias重命名的up命令, b是服务器名称.参考SSH密钥配置

upimg

# 或者up命令
up ~/Pictures/img/ b:img/

img.actiger.com