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


60

У мене дуже велика папка із 120 000+ файлів. і мені потрібно перемістити їх в інше місце на моїй самій машині (той же розділ).

Я хотів би скористатися tarкомандою, щоб згрупувати їх як єдине ціле, а потім mvдо кінця розташування.

Яка команда мені потрібна для запуску до tarних усіх разом і нічого не стискати (мені потрібен найшвидший результат).


1
Навіщо використовувати tar, а не лише mv (1) файли? Або скористайтеся cp (1), якщо ви не хочете втрачати оригінали?
фонбранд

@vonbrand, можливо, захоче rsync по мережі один єдиний безперервний файл. набагато швидше, ніж rsyncing 120k менших файлів. це різниця між постійною повною швидкістю до максимумів і мінімумів
mwm

Відповіді:


85

tar не стискається за замовчуванням, просто не додайте параметр стиснення:

tar cvf myfolder.tar myfolder

Я включаю коментар Хеннеса у свою відповідь, оскільки він додає корисну інформацію:

TAR (стрічковий архів) спочатку є програмою unix, яка використовується для створення архівів на стрічці. Оскільки всі пристрої розглядаються як файли в Unix, то не просто записати на стрічку, а натомість у файл. Зазвичай це робиться прапором -f. Команда tar cvf myfolder.tar myfolder означає tar, c reate, v erbose f ile filename_to_create what_to_tar. У цьому ніде немає стиснення. Архів смоли (як файли), де часто стискається за допомогою програми стиснення та отримує розширення .Z (наприклад, file.tar.Z). Пізніше це було включено до gtar із прапором z


Чи додасть це рекурсивно всі підпапки та файли в тарі?
сергсерг

2
@ Серг так, так і буде.
тердон

1
Дякую. Зазвичай я намагаюся відповісти як у короткій, так і в довгій формі. Як і в "так / ні", він [не] працюватиме недовго, і пояснення, чому як довша відповідь. Маючи передумови щодо того, чому часто допомагає в майбутньому.
Геннес

@ Сергій, тому що не завжди буває так, що керівництво чи вказівки настільки хороші, що вони роблять зрозумілі речі просто читаючи їх, іноді найкращий спосіб - рухатися вперед і все-таки спробувати команду, тоді ви побачите, що це робить, і як тільки ви дізнаєтеся, що це робить, або маєте гарну ідею, тоді посібник може підтвердити це для вас! легко перевірити tar на невеликому прикладі набору файлів. З прикладами того, як його використовувати, без необхідності робити голову чи хвіст керівництва.
барлоп

Зауважте, що якщо потрібні найшвидші результати, вам слід пропустити прапор "v", щоб вимкнути вихід. У моєму випадку це скоротило час команди з 16 секунд до 6 секунд при запуску на екземплярі AWS t2.medium.
Девід Баккей

6

Відповідь @terdon правильна.

Але я зробив невелику помилку, роблячи tar cvf myfolder.tar.gz myfolder. Я хотів однакових імен кінцевих файлів для того ж шляху, tar.gzнавіть якщо вони не стиснуті.

Отже, якщо ви помістите щось на кшталт .gz, .zкінця імені файлу, на яке ви намагаєтеся націлити, додаток tar зрозуміє, що ви хочете скористатись деяким стисненням, і воно буде застосовуватися відповідно до того, що ви ставите (gz = gzip).

Тож якщо ви хочете використовувати таке розширення tar.gz, обов'язково використовуйте прапор--no-auto-compress

--no-auto-compress    do not use archive suffix to determine the compression 
program
Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.