![rsync 维护给定点的文件夹结构](https://linux22.com/image/107583/rsync%20%E7%BB%B4%E6%8A%A4%E7%BB%99%E5%AE%9A%E7%82%B9%E7%9A%84%E6%96%87%E4%BB%B6%E5%A4%B9%E7%BB%93%E6%9E%84.png)
我正在尝试为我的远程服务器开发一个文件更新程序。因此,每次我修改工作站上的一些代码文件时,我都会运行它rsync
,它会修改远程服务器上的代码文件。
所以想象一下,如果我修改文件,/home/myuser/workspaces/project/folder/file.txt
我希望将其同步到[email protected]:/work/folder/file.txt
.正如您所看到的,服务器保留了文件夹结构,尽管它跳过了不相关的部分/home/myuser/workspaces/project/
如果我执行 rsync from/home/myuser/workspaces/project/
它很容易解决,因为我只需要添加选项-R
:
$ cd /home/myuser/workspaces/project/
$ rsync -aR folder/file.txt [email protected]:/work
这样就可以解决问题了。问题是我不知道命令将从哪里执行,所以我必须添加整个路径/home/.../file.txt
,并且使用显示的命令会将所有内容保存到: 中[email protected]:/work/home/myuser/workspaces/project/folder/file.txt
。
我想要实施的方案有什么解决方案吗?
顺便说一下,此时,远程主机上的rsync
可能是一个空文件夹。/work/
谢谢!
答案1
为了将来,我找到了最快的解决方案,其中涉及参数并在要开始创建的文件夹之前-R
添加。/./
例如:
$ rsync -aR /home/myuser/workspaces/project/./folder/file.txt [email protected]:/work
/work/folder/file.txt
将在远程服务器中创建该文件夹。
只是留下这个答案以供将来使用和其他人查看,因为在其他网站上很难找到它。