我对 PHP 项目中的文件进行了许多更改,我想通过 FileZilla FTP 将这些更改推送到我们的服务器。我不想推送所有文件,而是只想查找过去 14 天内修改过的文件并将它们复制到/ModifiedFiles
文件夹中,保留文件夹结构。这样我可以简单地将文件夹的内容拖到/ModifiedFiles
FileZilla 中,它将覆盖相应文件夹中的所有必需文件。
如果我使用的是 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
) 执行类似的操作,但cpio
OS/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