Jak używać polecenia tar do grupowania plików bez kompresji?

60

Mam bardzo duży folder zawierający ponad 120 000 plików. i muszę przenieść je w inne miejsce na tym samym komputerze (ta sama partycja).

Chciałbym użyć tarpolecenia, aby pogrupować je jako pojedynczą jednostkę, a następnie mvdo miejsca końcowego.

Jakiego polecenia potrzebuję, aby uruchomić tarje wszystkie razem i niczego nie kompresować (potrzebuję najszybszego wyniku).

sergserg
źródło
1
Po co używać tar, a nie tylko plików mv (1)? Lub użyj cp (1), jeśli nie chcesz zgubić oryginałów?
vonbrand
@ vonbrand można chcieć zsynchronizować przez sieć jeden ciągły plik. znacznie szybciej niż rsynchronizuje 120k mniejszych plików. to różnica między stałą pełną prędkością a wzlotami i upadkami
mwm

Odpowiedzi:

85

tar nie kompresuje domyślnie, po prostu nie dodawaj opcji kompresji:

tar cvf myfolder.tar myfolder

W odpowiedzi dołączam komentarz Hennesa, ponieważ dodaje on użytecznych informacji:

TAR (archiwum taśm) to pierwotnie program uniksowy używany do tworzenia archiwów na taśmie. Ponieważ wszystkie urządzenia są traktowane jako pliki w systemie Unix, łatwo nie zapisywać na taśmie, ale zamiast pliku. Zwykle odbywa się to za pomocą opcji -f. Polecenie tar cvf myfolder.tar myfolder oznacza tar, c reate, v erbose f ile nazwa_pliku_do_tworzenia what_to_tar. Nigdzie nie ma w tym żadnej kompresji. Archiwa tar (jako pliki) były często kompresowane za pomocą programu do kompresji i zyskały rozszerzenie .Z (np. File.tar.Z). Później został włączony do gtar z flagą Z.

terdon
źródło
Czy to rekurencyjnie doda wszystkie podfoldery i pliki do tar?
sergserg
2
@Erg tak, będzie.
terdon
1
Dzięki. Zwykle staram się odpowiadać zarówno w krótkiej, jak i długiej formie. Podobnie jak w „tak / nie” [nie] zadziała ”dla krótkiego i wyjaśnienie, dlaczego jako dłuższą odpowiedź. Zrozumienie, dlaczego często pomaga w przyszłości.
Hennes,
@Erg, ponieważ nie zawsze jest tak, że instrukcja lub instrukcje są tak dobre, że od razu je wyjaśniają, czasami najlepszym sposobem jest wypróbowanie polecenia i tak, a potem zobaczysz, co robi, a kiedy już wiesz, co to robi lub masz dobry pomysł, instrukcja może to dla Ciebie potwierdzić! łatwo jest przetestować tar na małym przykładowym zestawie plików. z przykładami jak go używać, bez konieczności tworzenia główki lub ogona instrukcji.
barlop
Zauważ, że jeśli pożądane są najszybsze wyniki, należy pominąć flagę „v”, aby wyciszyć wyjście. W moim przypadku skrócono czas polecenia z 16 sekund do 6 sekund podczas uruchamiania go na instancji AWS t2.medium.
David Backeus
6

Odpowiedź na @terdon jest poprawna.

Ale popełniłem mały błąd tar cvf myfolder.tar.gz myfolder. Chciałem mieć te same nazwy końcowe plików w tej samej ścieżce, tar.gznawet jeśli nie są one skompresowane.

Więc jeśli umieścisz coś .gz, .zna końcu nazwy pliku, którą próbujesz tarować, aplikacja tar zrozumie, że chcesz użyć kompresji i zastosuje się odpowiednio do tego, co wstawisz (gz = gzip).

Jeśli więc chcesz użyć takiego rozszerzenia tar.gz, pamiętaj o użyciu flagi--no-auto-compress

--no-auto-compress    do not use archive suffix to determine the compression 
program
Ratata Tata
źródło