Rsync 本地和服务器上文件夹路径对应的问题?


为了把本地的 repo/ 目录对应上传到 VPS 的 repo/ 我写了这样的脚本,
以便运行 up a 时, repo/a/ 能在服务器同步出现 repo/a :


 function up {
  rsync -avzl --delete --stats --progress \
  --exclude-from /Users/chen/repo/.rsyncignore \
  ~/repo/$1 \
  digital:/home/chen/repo/
}

为了单独同步名字是 repo/cirru/ 的子目录, 我又增加了一个脚本,
对应两边的路径增加了 cirru , 以便同样的目录结构被拷贝:


 function upcirru {
  rsync -avzl --delete --stats --progress \
  --exclude-from /Users/chen/repo/.rsyncignore \
  ~/repo/cirru/$1 \
  digital:/home/chen/repo/cirru/
}

然而运行 upcirru a 时, 问题出现了, 本地使用的是 repo/cirru/a 路径,
而服务器上对应变成了 repo/cirru/ 而不是预期的 repo/cirru/a .

就是说, 在两个不同的目录输入时, 目标文件的确定是不同的...
我很不理解这里发生了什么... 不知道是否有同学遇到过类似问题?

rsync vps

H一GOD 11 years, 3 months ago

rsync的一个坑是 rsync a b/ rsync a/ b/ 是不同的。

前者是把 a 同步到 b/a ,后者是把 a 同步到 b/

然而运行 upcirru a 时, 问题出现了, 本地使用的是 repo/cirru/a 路径,
而服务器上对应变成了 repo/cirru/ 而不是预期的 repo/cirru/a

目测你运行的不是真的 upcirru a ,而是输入了 a 的前几个字母后按了tab补全,然后自动给你补成了 upcirru a/

东东说了算 answered 11 years, 3 months ago

Your Answer