【问题标题】:Create tar archive without folders where only the name of the folder is known (recurring)创建没有文件夹的 tar 存档,其中只有文件夹的名称是已知的(重复)
【发布时间】:2013-05-30 11:56:11
【问题描述】:

我有一台 Synology DS213j。我已经在上面安装了 PhotoStation,它在我的所有文件夹中创建了一些 @eaDir 文件夹,以便创建一些缩略图。 例如,我有这个:

/photo
/photo/2012
/photo/@eaDir
/photo/2012/Album1
/photo/2012/Album2
/photo/2012/@eaDir
/photo/2012/Album1/SubAlbum1
/photo/2012/Album1/SubAlbum2
/photo/2012/Album1/@eaDir

我想对我的文件夹 2012 进行 tar,以便将其发送到 Amazon Glacier 进行备份。我不想使用 .zip,因为我可能有一些超过 4Gb 的文件,这对于 zip 来说太大了。

我已经这样做了:

tar -cvzf 2012.tar.gz 2012/

它有效,但包含了所有名为 @eaDir 的文件夹。

我的问题是。我想从我的 tar 文件中排除所有 @eaDir 文件夹。

我尝试使用 --exclude 功能,但它似乎在 Synology 上无效。也许我需要安装另一个包才能拥有另一个 tar 功能才能使用它。也许我可以使用正则表达式函数来实现我想要的。

有人可以帮我吗? (使用 --exclude 或正则表达式或其他任何东西)

【问题讨论】:

  • 看来我可以使用 tar 的 -X 选项,这似乎与 --exclude 相同。
  • 我试过这个 tar -cvz -X @eaDir -f 2012.tar.gz 2012 但还是不行...

标签: unix tar synology


【解决方案1】:

我发现排除指定文件并不容易.....尝试使用 prune 、 X 选项 --exclude=PATTERN 选项和 tar 的 --exclude-tag-under=FILE 选项查找,但空目录或@eaDir 的内容在最终结果中被打包......还尝试了一个小脚本来提供名称以在一个 while 循环中添加到 zip 中,这给我带来了一个小问题......

在您的问题中,您说:“它在我的所有文件夹中创建了一些 @eaDir 文件夹以创建一些缩略图” ....该目录 @eaDir 或其内容对您很重要吗?

如果你只是删除它们会简单得多:

find ./photo -iname "@eaDir" -ok rm -rf {} \; 

然后在上面使用 tar ....

 tar -cvf photo.tar ./photo

【讨论】:

  • 嗨!实际上,这些文件夹是由 PhotoStation(一个为查看图片而创建的 Synology 应用程序)自动创建的。我想将这些文件夹保留在我的 Synology 上,但我不想备份它们。
  • 如果你删除它们,如果你再次访问/查看照片,它们会不会被系统创建?
  • 嗯,这是可能的,但我想避免这种情况。我们不能用 tar 来做吗(这对我来说是最好的选择)。重新生成缩略图可能需要几天时间...
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2015-10-17
  • 1970-01-01
  • 2014-09-10
  • 2014-01-12
  • 2014-02-09
  • 1970-01-01
相关资源
最近更新 更多