To powinno być bardzo proste dla ekspertów tutaj.
Mam konto Linux z przydziałem dysku użytkownika wynoszącym tylko 6 GB. W folderze danych jest /opt
około 3 GB danych, a po skompresowaniu pojawia się 1 GB. Wewnątrz jest kilka dowiązań symbolicznych data-folder
. Zwykle przy wykonywaniu kopii zapasowej pracy wykonałem następujące czynności.
cp -rvfL /opt/data-folder ~/
cd ~/
tar -zcvf data-folder.tar.gz data-folder
rm -rvf data-folder
Teraz zużyłem już 2,5 GB miejsca na dysku użytkownika, mam tylko tyle miejsca, aby skopiować pliki do domu, ale nie do tar
tego ponownie.
Czy jest jakiś sposób na tar i skopiowanie folderu za pomocą jednego polecenia, powiedzmy za pomocą potoku.
PS Nie mogę się zalogować, /opt
ponieważ mam dostęp tylko do odczytu /opt
.
cd /opt; tar zcf $HOME/junk.tar.gz junk
.Odpowiedzi:
Chcesz utworzyć plik tar z dala od miejsca, w którym znajdują się pliki, które potrzebujesz?
Istnieje wiele sposobów, aby to zrobić.
Jeśli ma zostać utworzony lokalnie (= na tym samym komputerze):
Możesz dodać dodatkowe pliki lub katalogi do tar na końcu tego polecenia.
Jeśli ma zostać utworzony zdalnie (tzn. Chcesz utworzyć plik tar na hoście zdalnym z hosta zawierającego dane, które mają być wytarowane):
Późniejsza wersja jest bardzo wszechstronna. Na przykład można również „zduplikować” katalog + katalogi przy użyciu tej samej techniki:
Zduplikuj katalog + podkatalogi do innego katalogu lokalnego:
Zduplikuj katalog + podkatalogi do innego katalogu zdalnego:
Upuść „v”, jeśli nie potrzebujesz, aby wyświetlać pliki, ponieważ są one tarowane (lub nieoprawione): wtedy pójdzie znacznie szybciej, ale nie powie dużo, chyba że wystąpi błąd.
Używam „. / ...” dla źródła, aby zmusić tar do zapisania go jako ścieżki względnej. W niektórych przypadkach będziesz chciał dodać dodatkowe informacje o ścieżce:
Na przykład, aby spakować pliki crontab, w tym plik w / etc, możesz:
Używam celowo ścieżki względnej: niektóre STARE wersje tar mogą być niebezpieczne i wyodrębniać pliki z ich oryginalną ścieżką GLOBALNĄ, co oznacza, że możesz to zrobić:
cd /safedir ; tar xvf sometar
a pliki z nazwami globalnymi nadpisują pliki w ich oryginalnej ścieżce, która jest NA ZEWNĄTRZ / Safedir i nie pod spodem! Bardzo niebezpieczne i wciąż możliwe, ponieważ istnieją tam stare serwery produkcyjne. Lepiej jest przez cały czas używać względnych ścieżek, nawet jeśli używasz nowszej tar.źródło
-cvf
zamiastcvf
, inni nie rozpoznają-
stylu. Iz
zwykło oznaczać „kompresuj za pomocą„ kompresji ””, ale w „najnowszej” wersji tar oznacza „kompresuj za pomocą gzip”. Można wiedzieć, który jest używany na kompresji pliku z:file zefile
. A następnie odpowiednio zmień jego nazwę (jeśli używasz tarcompress
, powinna zostać przemianowana .tar.Z, a nie .tar.gz)Użyj
-h
opcji tar. Ze strony podręcznika:więc możesz użyć
tar -zcvfh data-folder.tar.gz /opt/data-folder
źródło
bsdtar
zamiast tego spróbować lubpax
(cd /opt && pax -Lw data-folder | gzip > ~/data-folder.tar.gz
), którytar -rf <tarfilename> <filename>
aby dodać je do istniejącego pliku tar.