Як зберігати велику папку в одному файлі без стиснення


11

Я хочу взяти папку 78 Гб і зберігати її в одному файлі (для завантаження в хмарний сервіс), ніби я стискаю її в архіві, але я не хочу стиснення (у мене не так багато процесора час доступний). Чи все-таки є, що я можу це виконати, можливо, термінальна команда, про яку я не знаю?


1
є tarкоманда в Linux. tar -cf long.file.tar folder
Костас

5
FYI: Існують програми для швидкого стиснення, деякі з яких будуть швидшими, ніж швидкість запису вашого диска, і багато, які будуть швидшими, ніж ваша мережа. Використання одного з них фактично пришвидшить справи, якщо дані взагалі стискаються. Наприклад, lzopрозрахований на швидкість.
дероберт

Відповіді:


20

Використання tar: tar -cf my_big_folder.tar /my/big/folder

Відновити архів за допомогою tar -xf my_big_folder.tar -C /

-C перейде до кореневого каталогу, щоб відновити ваш архів, оскільки створений вище архів містить абсолютні шляхи.

EDIT : Через відносно великий розмір архіву, найкраще буде надіслати його [безпосередньо] до остаточного місця, використовуючи SSH або точку монтажу хмарного ресурсу / папки. Наприклад, як пропонує Коул Джонсон :

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члени архіву завжди відносні, оскільки: а) вони можуть бути відновлені в будь-якому каталозі; б) tar видаляє провідні /під час створення архіву. Я особисто схильний завжди використовувати -C під час розпакування архіву.


Для уточнення редагування: зробіть tar -cf /network/mount/point/folder.tar /folderзамість того, щоб орієнтуватися на локальний комп'ютер, а потім завантажте, якщо зможете
Коул Джонсон,

Точне. Чим більше я читаю свою редакцію, тим більше я думаю, що це виглядає розгублено. Дякуємо за ваше розуміння.

1
Варто зазначити спосіб уникнути створення архіву з абсолютними шляхами: tar -cf $archive.tar -C $source_dir .. Якщо машина призначення не має каталогу, який має той самий шлях, що і вихідний каталог, вам потрібно буде це зробити. Просто дістаньтеся до -Cнового каталогу, коли витягаєте ( mkdir $destination_dir && tar -xf $archive.tar -C $destination_dir); в іншому випадку вміст архіву буде скинутий у будь-який каталог, у якому ви трапляєтеся.
Blacklight Shining

2

Альтернатива: cpio

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

Розпакування в поточний каталог:

cpio -id < myfolder.cpio

Застереження:

  • Якщо використовувати find /my/big/folderзамість cd, архів буде містити повні шляхи і вилучення намагатиметься слідувати їм;
  • Великі файли (> 2 Гб) можуть бути проблемою;

Cpio, як правило, набагато повільніше, ніж дьоготь, проте, якщо він використовується з блоком за замовчуванням 512. ( fixunix.com/sco/89900-cpio-performance-vs-tar-bit-mystery.html )
PSkocik
Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.