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

60

У меня очень большая папка из 120000+ файлов. и мне нужно переместить их в другое место на том же компьютере (тот же раздел).

Я хотел бы использовать tarкоманду, чтобы сгруппировать их как единое целое, а затем mvв конечное местоположение.

Какая команда мне нужна, чтобы запустить tarих все вместе и ничего не сжимать (мне нужен самый быстрый результат).

sergserg
источник
1
Зачем использовать tar, а не только mv (1) файлы? Или используйте cp (1), если вы не хотите потерять оригиналы?
vonbrand
@ vonbrand, возможно, вы захотите rsync по сети один единственный непрерывный файл. гораздо быстрее, чем rsyncing 120k меньших файлов. это разница между постоянной полной скоростью к максимумам и минимумам
mwm

Ответы:

85

tar по умолчанию не сжимает, просто не добавляйте параметр сжатия:

tar cvf myfolder.tar myfolder

Я включил комментарий Хеннес в свой ответ, так как он добавляет полезную информацию:

TAR (архив на магнитной ленте) изначально была программой Unix, используемой для создания архивов на ленте. Поскольку все устройства в Unix обрабатываются как файлы, легко записать их не на ленту, а в файл. Обычно это делается с помощью флага -f. Команда смолы CVF myfolder.tar MyFolder средства деготь, с reate, v erbose е Ile filename_to_create what_to_tar. Здесь нигде нет сжатия. Архивы tar (в виде файлов), которые часто сжимаются с помощью программы сжатия и получают расширение .Z (например, file.tar.Z). Позже это было включено в gtar с флагом z

terdon
источник
Будет ли это рекурсивно добавлять все подпапки и файлы в tar?
sergserg
2
@ Да, так и будет.
Terdon
1
Благодарю. Я обычно стараюсь отвечать как в краткой, так и в полной форме. Как в «да / нет, это будет [не] работать» для краткого, и объяснение, почему, как более длинный ответ. Имея представление о том, почему часто помогает в будущем.
Хеннес
@ Так как не всегда бывает так, что руководство или инструкции настолько хороши, что они все проясняют, просто читая их, иногда лучший способ - это все равно попробовать команду, тогда вы увидите, что она делает, и как только вы узнаете, что он делает или у вас есть хорошая идея, руководство может подтвердить это для вас! легко протестировать tar на небольшом наборе примеров файлов. с примерами того, как его использовать, не прибегая к руководству.
Barlop
Обратите внимание, что если требуются самые быстрые результаты, вы должны опустить флаг "v", чтобы отключить вывод. В моем случае это сократило время команды с 16 до 6 секунд при запуске его на экземпляре AWS t2.medium.
Дэвид Бакеус
6

Ответ @terdon правильный.

Но я сделал небольшую ошибку, делая tar cvf myfolder.tar.gz myfolder. Я хотел одинаковые конечные имена для файлов по тому же пути, tar.gzдаже если он не сжат.

Таким образом, если вы поместите что-то вроде .gz, .zконца имени файла, который вы пытаетесь tar, приложение tar поймет, что вы хотите использовать некоторое сжатие, и оно будет применяться соответственно к тому, что вы положили (gz = gzip).

Поэтому, если вы хотите использовать такое расширение tar.gz, обязательно используйте флаг--no-auto-compress

--no-auto-compress    do not use archive suffix to determine the compression 
program
Ратата Тата
источник