如何在不压缩的情况下将大文件夹存储在单个文件中


11

我想要一个78gb的文件夹并将其存储在一个文件中(以便上传到云服务中),就好像我将其压缩在存档中一样,但是我不需要任何压缩(我没有那么多的CPU时间可用)。无论如何,有什么我可以完成的,也许是我不知道的终端命令?


1
tar在Linux中有命令。tar -cf long.file.tar folder
Costas

5
仅供参考:有一些快速压缩程序,其中一些会比您的磁盘写入速度快,而另一些则会比您的网络快。如果数据是完全可压缩的,那么使用其中之一实际上会加快速度。例如,lzop为速度而设计。
derobert

Answers:


20

用途tartar -cf my_big_folder.tar /my/big/folder

使用还原文件 tar -xf my_big_folder.tar -C /

-C将切换到根目录以还原您的档案,因为上面创建的档案包含绝对路径。

编辑:由于档案的大小相对较大,因此最好使用SSH或云资源/文件夹的安装点将其[直接]发送到其最终位置。例如,正如科尔·约翰逊Cole Johnson)建议的那样

tar -cf /network/mount/point/my_big_folder.tar /my/big/folder

要么

tar -c /my/big/folder | ssh example.com "cat > my_big_folder.tar"

编辑:正如Blacklight Shining所建议的那样,如果要避免使用绝对路径,则可以更改为大文件夹的父文件夹,然后tar从那里:

tar -cf /network/mount/point/my_big_folder.tar \
    -C /my/big/folder/location the_big_folder

要么

tar -cC /my/big/folder/location the_big_folder | \
ssh example.com "cat > my_big_folder.tar"

个人反思

是否包括相对路径或绝对路径是个人喜好问题。

在某些情况下,绝对路径是显而易见的,例如在灾难恢复情况下进行还原。对于本地项目或集合,通常会从所需文件夹的父目录中存档目录树,以免造成当前目录混乱,以防意外将存档解压缩。如果big_folder位于标准* NIX层次结构的某个深处,则开始归档big_folder偏离的第一个非标准文件夹及其目录树是有意义的

最终-在这里要花哨的- tar存档成员始终是相对的,因为a)他们可以在任何目录中还原,并且b) 在创建存档时tar删除/开头。我个人倾向于在解压缩存档文件时始终使用-C


为了澄清编辑:做tar -cf /network/mount/point/folder.tar /folder的,而不是tarring到本地计算机,然后上传,如果你能
科尔约翰逊

精确。我阅读的内容越多,看起来就越混乱。感谢您的见解。

1
值得注意的是避免使用绝对路径进行归档的方法:tar -cf $archive.tar -C $source_dir .。如果目标计算机没有与源目录具有相同路径的目录,则需要这样做。-C提取(mkdir $destination_dir && tar -xf $archive.tar -C $destination_dir)时,请确保进入新目录;否则存档内容会被人抛弃到任何目录你碰巧英寸
黑光闪耀

2

备选:cpio

(cd /my/big/folder && find . -depth -print0 | cpio -0o > myfolder.cpio)

解压缩到当前目录:

cpio -id < myfolder.cpio

注意事项:

  • 如果使用find /my/big/folder而不是cd,则归档文件将包含完整路径,并且提取将尝试遵循它们。
  • 大文件(> 2GB)可能是个问题;

CPIO往往比焦油慢得多,不过,如果用512(默认块大小使用fixunix.com/sco/89900-cpio-performance-vs-tar-bit-mystery.html
PSkocik
By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.