Ric*_*ard 6 tar backup archive split
我有一个包含许多文件的目录。这些文件总共占用了几 GB 的空间。我想压缩这个目录。
但是将目录压缩为单个文件会使该文件难以移动,因此我想要多个文件。
我可以使用:
tar cvzf - dir/ | split --bytes=200MB - sda1.backup.tar.gz.
Run Code Online (Sandbox Code Playgroud)
要做到这一点,但我担心我将需要所有备份文件才能恢复任何数据。我更希望每个文件都是自己的独立单元,包含源数据的一部分。
我能想到的一种方法是构建一个脚本,该脚本计算每个输入文件的大小并贪婪地将文件附加到列表中,直到达到最大大小。然后对文件列表进行 tar-ed 并开始一个新列表。重复此操作,直到所有文件都在 tars 中。然后可以独立提取焦油。
这不是其他问题的重复,因为我特别想知道如何以这样的方式执行此操作,即整个存档的每个部分本身都是一个有效的存档,并且每个文件都可以在不需要联合存档的情况下重建。
有没有做这种事情的实用程序?
tar
可以应对分割后的部分档案。当您尝试恢复此类存档的一部分时,它将跳过开始时无法使用的任何内容,并在最后告诉您任何部分文件;其间的一切都将得到正确恢复。您可以tar
使用磁带长度选项指示自身在创建档案时分割档案;有关详细信息,请参阅创建分成最大大小块的 tar 存档。
有一些实用程序比这更好,并且可以生成独立的存档部分(只要大小限制足以存储存档中的最大文件);不幸的是,我所知道的不能满足您的所有要求。在大多数平台上,都有zipsplit
可以分割 zip 文件的工具,但它只能处理最大 2GB 的存档。在 Plan 9 上,有tarsplit
一个可以分割 tarball 的工具,但我不确定它是否可以轻松移植到您正在使用的任何系统(我怀疑您没有使用 Plan 9...)。