【发布时间】:2009-01-30 08:32:02
【问题描述】:
我有一个源目录,例如 /my/source/directory/ 和一个目标目录,例如 /my/dest/directory/,我想用一些镜像约束。
- 我想将满足 find 命令某些条件的文件,例如 -ctime -2(小于 2 天)复制到 dest 目录以进行镜像
- 我想包含一些前缀,以便我知道它来自哪里,例如 /source/directory
- 我想用绝对路径来做这一切,所以它不依赖于我从哪个目录运行
- 我想没有 cd 命令也是一种好习惯。
- 如果子目录不存在,我希望创建子目录
所以
/my/source/directory/1/foo.txt -> /my/dest/directory/source/directory/1/foo.txt
/my/source/directory/2/3/bar.txt -> /my/dest/directory/source/directory/2/3/bar.txt
我已经将以下命令行组合在一起,但看起来有点难看,有人可以做得更好吗?
find /my/source/directory -ctime -2 -type f -printf "%P\n" | xargs -IFILE rsync -avR /my/./source/directory/FILE /my/dest/directory/
如果您认为我应该自己添加此命令行作为答案,请发表评论,我不想贪婪地获得声誉。
【问题讨论】:
-
请让您的答案成为答案。有什么难看的?
-
它不使用空终止符,所以它会在名称中包含空格和换行符的文件上失败?
标签: shell scripting directory mirroring