web-dev-qa-db-ja.com

大きなフォルダーを圧縮せずに1つのファイルに保存する方法

78gbフォルダーを取り、それを1つのファイル(クラウドサービスへのアップロード用)に保存したいのですが、アーカイブで圧縮しているように見えますが、圧縮はしたくない(CPUはそれほど多くない)利用可能な時間)。とにかくこれを達成できる方法はありますか?おそらく私が知らない端末コマンドですか?

11
cjmaria

tarを使用:tar -cf my_big_folder.tar /my/big/folder

tar -xf my_big_folder.tar -C /を使用してアーカイブを復元します

-Cは、上記で作成されたアーカイブに絶対パスが含まれているため、ルートディレクトリに移動してアーカイブを復元します。

[〜#〜] edit [〜#〜]:アーカイブのサイズが比較的大きいため、[直接送信することをお勧めします]を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"

[〜#〜] edit [〜#〜]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を使用する傾向があります。

20
user86969

代替:cpio

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

現在のディレクトリに解凍:

cpio -id < myfolder.cpio

警告:

  • cdの代わりにfind /my/big/folderを使用すると、アーカイブには完全なパスが含まれ、抽出はそれらを追跡しようとします。
  • 大きなファイル(> 2GB)は問題になることがあります。
2
Vi.