我正在尝试以非递归方式将一系列目录的内容复制到另一个远程系统。
/dirA/dir1/file
/dirA/dir2/file
/dirA/dir3/file
Run Code Online (Sandbox Code Playgroud)
DIR1,DIR2,和DIR3包含很多目录,我不希望被复制。在远程主机上复制到 /dirB 保持相同的目录结构。
我试过:
rsync /dirA/*/ host:/dirB/
rsync /dirA/ host:/dirB/
Run Code Online (Sandbox Code Playgroud)
但他们不做我想做的。
Ple*_*and 20
rsync 允许您指定触发包含或排除文件和目录的模式。我想你想使用这样的东西:
rsync -a -f '- /*/*/' /dirA/ host:/dirB/
Run Code Online (Sandbox Code Playgroud)
解释:
-a触发器激活的“符号链接,设备,属性,许可,所有权等”都递归和保存,根据归档模式man rsync。-f是 的缩写--filter=,它增加了文件过滤规则。
- 意味着这是一个排除模式。/意味着模式必须从dirA/(rsync“transfer-root”)开始。*/*模式的一部分是指子目录中的任何内容。/限制了对目录的排除。的子目录中的文件dirA/不受影响。所以最后, rsync 只会向下复制一层(并且也不创建二级目录)。
小智 6
由于某种原因,上面的解决方案(由 PleaseStand 提供)对我不起作用。这虽然有效:
rsync -avc --no-r ./source/* ./destination/
还有这个替代方案:
rsync -avc --exclude "/" ./source/ ./destination/
| 归档时间: |
|
| 查看次数: |
17316 次 |
| 最近记录: |