为了把本地的 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的一个坑是
rsync a b/
和rsync a/ b/
是不同的。前者是把
a
同步到b/a
,后者是把a
同步到b/
。目测你运行的不是真的
upcirru a
,而是输入了a
的前几个字母后按了tab补全,然后自动给你补成了upcirru a/
。