从特定date范围内的文件中创buildtar

我在从我的共享主机获取数据时遇到问题。 我有大约20 GB的文件夹包含大约40.000图像。 我试图通过拆分存档文件来存档该文件夹:

tar -cvpj 'home/public_html/images/'/ | split -d -b 100m - images.tar.bz2. 

它工作正常,但问题是这个过程需要很长的时间,我想我的托pipe服务提供商正在杀死在归档过程中的过程。

所以我不能使用归档文件,因为当我尝试提取它是给予损坏的消息,当我再次运行此命令时,它会尝试再次归档所有文件并覆盖以前归档的文件。

现在我决定按date归档,例如,每个归档只包含一个月内上传的文件。 不幸的是,我尝试了几个命令,但是我找不到方法。

我发现这个问题: 你怎么只根据特定的文件名称tar目录中的文件? 但我需要特定的date范围。
如何通过date模式存档/压缩和过滤文件? 或者有没有其他的方法来从那里得到我的文件我尝试使用cPanel,但它跳过该文件夹。

我想我会实际做到这一点使用查找,然后将该input传递给焦油。 使用你的例子,假设你想要60到90天之间的文件。

find / home / public_html / images -type f -daystart -mtime -90 -and -mtime +60 -print0 | xargs -0 tar -Ajf images_60-90.tar.bz2

这将列出所有上次修改超过60天前和不到90天前的文件,并将其放在名为images_60-90.tar.bz2的压缩包中。 我使用-print0xargs主要是为了防止名称中包含空格的文件,并且如果有太多的文件超出了命令行的最大长度(可以通过运行命令getconf ARG_MAX )。 我没有testing过这个命令,而且我不知道如果在文件不存在的时候使用append选项会发生什么,所以你可能需要做更多的调整。

但是,如果您知道任何文件名中都没有空格,并且文件的数量会less于ARG_MAX的值,则您可以简单地执行一下命令。

find / home / public_html / images -type f -daystart -mtime -90 -and -mtime +60 tar -cjf images_60-90.tar.bz2