Próbuję utworzyć plik tar.gz za pomocą następującego polecenia:
sudo tar -vcfz dvr_rdk_v1.tar.gz dvr_rdk/
Następnie zaczyna tworzyć pliki (wiele plików w folderze), ale pojawia się następujący błąd:
tar: dvr_rdk_v1.tar.gz: Cannot stat: No such file or directory
tar: Exiting with failure status due to previous errors
Nie widzę żadnego opisu tego błędu, co to znaczy?
-
robi różnicę, ponieważ GNU tar jest dziwaczny. Argumentów opcji nie można zawrzeć w pierwszym argumencie, gdy nie zaczyna się od a-
, więc argument dof
jest kolejnym argumentemtar
, a więctar vcfz dvr_rdk_v1.tar.gz
jest równoważny ztar -v -c -f dvr_rdk_v1.tar.gz -z
.z
lubj
archiwum, to uda się nawet przy-
zaangażowanym zaangażowaniu. Po dodaniu łącznika jest uwzględniany, traktuje ostatni znak w opcji jako „plik”. W rezultacie otrzymujęj
lubz
jako zarchiwizowany plik, jeśli użyję tej opcji-cvfz
lub-cvfj
.-f
Opcja powinna bezpośrednio poprzedzać nazwę pliku. Więc użyjtar -vczf filename.tar.gz
zamiast-vcfz
źródło
j
lub zaz
pomocą tych poleceń-cvfj
i-cvfz
odpowiednio.Polecenie tar historycznie było jednym z niewielu poleceń, które nie są zgodne ze wskazówkami dotyczącymi składni narzędzi uniksowych .
Strona standardów dla tar mówi:
Chociaż wytyczne dotyczące składni obejmują:
Tak więc, podczas gdy wpisane przez ciebie polecenie
tar -vcfz dvr_rdk_v1.tar.gz dvr_rdk/
będzie dobrze na starszych wersjach tar, niektóre wersje tar, które są napisane w celu ścisłego przestrzegania wytycznych składni narzędzia, przeanalizują to, co znaczy „użyjz
jako argumentu pliku do-f
”. Aby więc być przenośnym, powinieneś użyć następujących elementów:źródło
Aby utworzyć archiwum
Wyświetla listę plików i folderów
I ponownie wyodrębnić
źródło
tar
.tar
źle używał , chociaż miło jest przynajmniej wspomnieć o zasadniczej różnicy (przejście-f
do końca)z
niż umieściłf
na końcu, stąd mój komentarz.