Jak wykonać tarowanie katalogu, a następnie usunąć oryginały z tego katalogu?
Próbuję tar
kolekcję plików w katalogu o nazwie ‘my_directory’ i usunąć oryginały za pomocą polecenia:
tar -cvf files.tar my_directory --remove-files
Jednak usuwa to tylko poszczególne pliki wewnątrz katalogu, a nie sam katalog (który jest tym, co określiłem w poleceniu). Czego mi tu brakuje?
EDIT:
Tak, przypuszczam, że opcja ‘remove-files’ jest dość dosłowna. Chociaż ja również znalazłem stronę man niejasną w tym punkcie. (W linuxie mam tendencję do nie rozróżniania katalogów i plików tak bardzo, i zapominam czasem, że nie są one tym samym). Wygląda na to, że konsensus jest taki, że nie usuwa katalogów.
Jednakże, moim głównym powodem do zadania tego pytania jest obsługa przez tar'a ścieżek bezwzględnych. Ponieważ musisz podać względną ścieżkę do pliku/plików, które mają być skompresowane, musisz zmienić katalog na nadrzędny, aby tarował je poprawnie. Jak widzę, użycie jakiejkolwiek komendy ‘rm’ jest potencjalnie niebezpieczne w tej sytuacji. Dlatego miałem nadzieję uprościć sprawę, sprawiając, że tar sam wykona usunięcie.
Na przykład, wyobraźmy sobie skrypt kopii zapasowej, w którym katalog do backupu (tj. tar) jest dołączony jako zmienna powłoki. Jeśli ta wartość zmiennej powłoki została źle wpisana, możliwe, że wynikiem mogą być usunięte pliki z katalogu, w którym byłeś ostatnio.