Skompresować folder za pomocą tar?

Próbuję skompresować folder (/var/www/) do ~/www_backups/$time.tar gdzie $time to aktualna data.

Oto co mam:

cd /var/www && sudo tar -czf ~/www_backups $time" 

Jestem kompletnie zagubiony i siedzę przy tym od wielu godzin. Nie mam pewności, czy -czf jest poprawne. Chcę po prostu skopiować całą zawartość /var/www do pliku $time.tar i chcę zachować uprawnienia do wszystkich plików akta. Czy ktoś może mi pomóc?

Komentarze

  • potrzebujesz " po drugiej stronie $time również.

Odpowiedz

Do tar i gzip folder, składnia to:

tar czf name_of_archive_file.tar.gz name_of_directory_to_tar 

- z czf jest opcjonalne.

Jeśli chcesz tar bieżący katalog, użyj ., aby go wyznaczyć.

Aby dynamicznie tworzyć nazwy plików, użyj narzędzia date (spójrz na jego stronę podręcznika dla dostępnych opcji formatu). Na przykład:

cd /var/www && tar czf ~/www_backups/$(date +%Y%m%d-%H%M%S).tar.gz . 

Spowoduje to utworzenie pliku o nazwie podobnej do 20120902-185558.tar.gz.

W systemie Linux prawdopodobnie tar obsługuje również kompresję BZip2 z j zamiast z opcja. I prawdopodobnie inni. Sprawdź stronę podręcznika w systemie lokalnym.

Komentarze

  • To jest idealne, dziękuję. Mam jednak jeden mały problem. Po utworzeniu pliku tar z / var / www, jest on umieszczany w katalogach / var / www w pliku tar. Tutaj ' jest kod i ' używam teraz sudo tar -czf ~/www_backups/$time.tar /var/www/" Wyobraź sobie, że mam plik o nazwie test.txt wewnątrz / var / www. Po zrobieniu kopii tar pliku, kiedy go rozpakuję, zostanie on umieszczony w katalogach / var / www. Czy to ma sens? Mam nadzieję, że tak, trochę trudne do wyjaśnienia. Sprawdzę obsługę BZip2, dzięki za sugestię!
  • To ' jest powodem, dla którego najpierw cd do katalog, który chcesz spakować, a następnie tar cf file.tar . – ten ostatni . zamiast określać pełną ścieżkę, spowoduje, że ścieżki wewnątrz archiwum będą odpowiadać aktualny katalog. Możesz także użyć opcji -C dla tar (spójrz na stronę podręcznika).
  • Tak, to działało znacznie lepiej. Wielkie dzięki, doceniam to!
  • @Qwertylicious -f (ze strony podręcznika) Read the archive from or write the archive to the specified file.The filename can be - for standard input or standard output.
  • W najnowszych wersjach tar wielkie litery J (zamiast z) będą używać xz kompresja LZMA2.

Odpowiedź

Przykłady najpopularniejszych algorytmów kompresji

Pytanie brzmi po prostu " Skompresuj folder z tar? " Ponieważ ten tytuł jest bardzo ogólny, ale pytanie i odpowiedź są znacznie bardziej szczegółowe, a ze względu na bardzo dużą liczbę wyświetleń, które przyciągnęło to pytanie, czułem to byłoby korzystne dodanie aktualnej listy przykładów archiwizacji / kompresji i wyodrębniania / dekompresji z różnymi powszechnie używanymi algorytmami kompresji.

Zostały one przetestowane w Ubuntu 18.04.4. Są bardzo proste do ogólnego użytku, ale można je łatwo zintegrować z bardziej szczegółową treścią pytania PO, korzystając z technik opisanych w zaakceptowanej odpowiedzi i pomocnych komentarzach powyżej.

Jedna rzecz do uwagi dla bardziej ogólnych odbiorców jest taka, że tar nie doda automatycznie niezbędnych rozszerzeń (takich jak .tar.gz) – użytkownik musi je jawnie dodać, jak widać w polecenia poniżej:

# 1: tar (create uncompressed archive) all files and directories in the current working directory recursively into an uncompressed tarball tar cvf filename.tar * # 2: Untar (extract uncompressed archive) all files and directories in an uncompressed tarball recursively into the current working directory tar xvf filename.tar # 3: tar (create gzipped archive) all files and directories in the current working directory recursively into a tarball compressed with gzip tar cvzf filename.tar.gz * # 4: Untar (extract gzipped archive) all files and directories in a tarball compressed with gzip recursively into the current working directory tar xvf filename.tar.gz # Note: same options as 2 above # 5: tar (create bzip2"ed archive) all files and directories in the current working directory recursively into a tarball compressed with bzip2 tar cvjf filename.tar.bz2 * # Note: little "j" in options # 6: Untar (extract bzip2"ed archive) all files and directories in an tarball compressed with bzip2 recursively into the current working directory tar xvf filename.tar.bz2 # Note: same options as 2 and 4 above # 7: tar (create xz"ed archive) all files and directories in the current working directory recursively into a tarball compressed with xz tar cvJf filename.tar.xz * # Note: capital "J" in options # 8: Untar (extract xz"ed archive) all files and directories in an tarball compressed with xz recursively into the current working directory tar xvf filename.tar.xz # Note: same options as 2, 4, and 6 above 

Zobacz stronę podręcznika systemu Tar (najlepiej użyć man tar na konkretnym komputerze), aby uzyskać dalsze szczegóły. Poniżej podsumuję opcje użyte powyżej bezpośrednio ze strony podręcznika:

-c, –create
tworzy nowe archiwum

-x, –extract, –get
wypakowuje pliki z archiwum

-v, –verbose
dokładna lista przetworzonych plików

-z, –gzip
filtruje archiwum przez gzip

-j, –bzip2
filtruj archiwum przez bzip2

-J, –xz
filtruj archiwum przez xz

-f, –file = ARCHIWUM
użyj pliku archiwum lub ARCHIWUM urządzenia

Nie trzeba dodawać - przed połączonymi opcjami ani znaku = między opcją f a nazwą pliku.

Wszystko to mam z mojego niedawnego artykułu , który zostanie rozszerzony do znacznie bardziej obszernego artykułu, ponieważ mam czas na pracę to.

Dodaj komentarz

Twój adres email nie zostanie opublikowany. Pola, których wypełnienie jest wymagane, są oznaczone symbolem *