Utworzyłem plik tar.gz (używając GUI, a nie wiersza poleceń). Jak mogę go zaktualizować poleceniem dodawania nowych plików i aktualizowania plików zmodyfikowanych?
Zwykle używasz do tego flagi -u. Ze strony man tar:
-u, --update
only append files newer than copy in archive
więc ta sekwencja zrobi to, czego potrzebujesz:
# First create the tar file. It has to be UNCOMPRESSED for -u to work
tar -cvf my.tar some-directory/
# ... update some files in some-directory
# ... add files in some-directory
# Now update only the changed and added files
tar -uvf my.tar some-directory/
# Compress if desired
gzip my.tar
Jeśli chcesz zaktualizować określony plik w *.tar.gzpliku, wykonaj następujące czynności:
Wprowadź, viskąd tarplik jest dostępny
/home>vi
Na przykład, jeśli chcesz zmodyfikować plik simple.tar.gz znajdujący się w /home/test/katalogu:
/home/test>vi
A w pustym edytorze wpisz :n simple.tar.gzi naciśnij Enter
, a otrzymasz listę folderów i plików, przesuń kursor tam, gdzie chcesz zmodyfikować, i kliknij Enter. Pokaże viedytor określonego pliku. Następnie iopcja zmiany pliku. Po udanej zmianie. Naciśnij Escklawisz i wybierz, :wqaby zapisać i zamknąć plik. Następnie użyj, :qaby wyjść z listy plików.
Jeśli zamierzasz to robić wielokrotnie, optymalizacja może być:
if [[ -f my.tar.gz ]]; then
if [[ ! -f my.tar ]]; then
echo 'No tar, unzipping tar.gz'
gunzip my.tar.gz
fi
tar -uvf my.tar file1 file2 file_new
gzip -fk my.tar # This keeps a copy of the tar.
# -f --force overwrite existing .tar.gz
# -k --keep Keep the input file (.tar file)
else
tar -cvzf my.tar.gz file1 file2
fi
Odpowiedzi:
Zwykle używasz do tego flagi -u. Ze strony man tar:
więc ta sekwencja zrobi to, czego potrzebujesz:
Aby uzyskać nieco bardziej szczegółowy wygląd, zobacz tutaj: http://www.gnu.org/software/tar/manual/html_node/how-to-update.html
źródło
Rozwiązanie / obejście
Nie można zaktualizować skompresowanego archiwum TAR ( .tar.gz ) w jednym kroku. Ale jeśli masz wystarczająco dużo wolnego miejsca, możesz to zrobić:
Wyodrębnij plik .tar z pliku .tar.gz :
gunzip filename.tar.gz
Zaktualizuj nieskompresowany plik .tar za pomocą
tar -u
polecenia:tar -uf filename.tar new_file
Skompresuj zaktualizowany plik .tar :
gzip filename.tar
Przyśpieszyć
Jeśli masz procesor wielordzeniowy, zalecamy użycie
pigz
zamiastgzip
do wypakowywania i tworzenia plików .gz . (pigz
jest wielowątkową implementacjągzip
)Po prostu zamień
gzip
/gunzip
polecenia dopigz
/unpigz
.Powiązane instrukcje
źródło
Jeśli chcesz zaktualizować określony plik w
*.tar.gz
pliku, wykonaj następujące czynności:Wprowadź,
vi
skądtar
plik jest dostępnyNa przykład, jeśli chcesz zmodyfikować plik simple.tar.gz znajdujący się w
/home/test/
katalogu:A w pustym edytorze wpisz
:n simple.tar.gz
i naciśnij Enter , a otrzymasz listę folderów i plików, przesuń kursor tam, gdzie chcesz zmodyfikować, i kliknij Enter. Pokażevi
edytor określonego pliku. Następniei
opcja zmiany pliku. Po udanej zmianie. Naciśnij Escklawisz i wybierz,:wq
aby zapisać i zamknąć plik. Następnie użyj,:q
aby wyjść z listy plików.źródło
Jeśli zamierzasz to robić wielokrotnie, optymalizacja może być:
źródło