如何在保留文件夹结构的同时复制修改的文件

如何在保留文件夹结构的同时复制修改的文件

我对 PHP 项目中的文件进行了许多更改,我想通过 FileZilla FTP 将这些更改推送到我们的服务器。我不想推送所有文件,而是只想查找过去 14 天内修改过的文件并将它们复制到/ModifiedFiles文件夹中,保留文件夹结构。这样我可以简单地将文件夹的内容拖到/ModifiedFilesFileZilla 中,它将覆盖相应文件夹中的所有必需文件。

如果我使用的是 Windows,我可以运行这行代码,它将完成我想要的:

xcopy RUF_Donation_Web ModifiedFiles /S /V /I /R /D:02-09-2016

如何在 Mac (OS X Yosemite) 上的 Bash 终端中完成此操作?

答案1

cpio这是or的典型工作pax

find . -type f -mtime -14 -print0 | pax -0 -rw /ModifiedFiles

您还可以使用该-l选项来创建链接而不是副本。在 Debian 上该命令无法正常工作pax,但在 OS/X 上可能不会出现同样的问题。

您可以使用cpio( 的祖先pax) 执行类似的操作,但cpioOS/X 上的实现似乎不支持允许任意文件名的-0/选项。--null如果您知道文件名不包含换行符,您仍然可以执行以下操作:

find . -type f -mtime -14 | cpio -dp /ModifiedFiles

Debian (GNU) 和 OS/X 版本cpio都可以-l选择创建链接而不是副本。 (Debian 的似乎可以正常工作)。

答案2

您想要实现的是在 rsync 中构建的。你可以rsync -a /source /dest。您可以将其放入一个简单的脚本中,然后将其添加为 cron 作业。如果您想保留已复制内容的日志,您可以附加--log-file=[File]选项。您可以在这里找到更多信息:http://linux.die.net/man/1/rsync

相关内容