使用rsync 或者 git 同步本地数据到服务器

同步本地数据到服务器上

rsync 同步

windows 下使用 cwRsync

这个 cwRsync 里面也是用的rsync, 是由 cygwin 编译的, 在使用这个rsync 的时候如果ssh 用的是别的平台编译的( 如 git-base 里自带的 ssh ) 就会有问题,
windows 使用cwRsync 有很多问题, 但是由于rsync 是增量同步的, 目前还没有找到其他好用的工具, 也就只能再忍忍了
示例:

1
rsync -av --exclude=".git/*" -e "E:\work\tools\cwRsync_5.4.1_x86_Free\ssh.exe -i C:\Users\wcq\.ssh\id_rsa" --delete public\ wcq@IP:~/tmp/
  • 😠 注意

    1. 要用 -e 参数来指定 ssh 的路径 和 ssh 的私钥 ( 这个私钥对应的公钥应该已经添加到服务器的 .ssh/authorized_keys 里了)
    2. 源目录 ( 示例中的 public\ ) 不能使用绝对路径, 无论你的路径是 /cygdrive/c/xxx 这种标准的cygwin 的路径还是 “E:\\xxx” 这种windows 的标准路径
    3. 源目录后面要跟一个反斜杠\ 不然传输过程中会出问题, 导致一些莫名其妙的问题, 如目标目录的权限被莫名更改, 导致文件传不完等
    4. –exclude 后面的参数不能太具体, 如果是 --exclude="public/.git/*" 就会有问题

git 同步 (git init –bare)

服务器上的操作

  1. 在服务器上安装 git
  2. 在服务器上新建一个空的仓库
    1
    2
    
        cd ~/
        git init --bare blog_srv.git
    

    里面什么也没有, 包括远程通过 git push 过来之后看到的还是这些, 只不过数据都藏在 objects 里了, 只有用 git pull 出来才看得到
  3. 等本地push 完之后
    • 首次下载仓库数据
      1
      2
      
          cd ~/
          git clone blog_srv.git my_blog
      
    • 进入仓库 git pull
      1
      2
      
          cd ~/my_blog/
          git pull 
      

本地的操作

  1. 在服务器上建好仓库后, 进入静态网站目录, 关联远程仓库, 然后把数据 push 到远程仓库
    1
    2
    3
    4
    5
    6
    
    cd public
    git init
    git remote add origin wcq@IP:~/blog_srv.git
    git add .
    git commit -m "xxx"
    git push origin master
    
Licensed under CC BY-NC-SA 4.0