Saya mencoba tar
kumpulan file dalam direktori bernama 'my_directory' dan menghapus yang asli dengan menggunakan perintah:
tar -cvf files.tar my_directory --remove-files
Namun itu hanya menghapus file individu di dalam direktori dan bukan direktori itu sendiri (yang saya tentukan dalam perintah). Apa yang kulewatkan di sini?
EDIT:
Ya, saya kira opsi 'hapus-file' cukup literal. Meskipun saya juga menemukan halaman manual tidak jelas tentang hal itu. (Di linux saya cenderung tidak terlalu membedakan antara direktori dan file yang banyak, dan kadang-kadang lupa bahwa itu bukan hal yang sama). Sepertinya konsensusnya adalah ia tidak menghapus direktori.
Namun, titik dorongan utama saya untuk mengajukan pertanyaan ini berasal dari penanganan tar terhadap jalur absolut. Karena Anda harus menentukan jalur relatif ke file yang akan dikompresi, karena itu Anda harus mengubah ke direktori induk untuk tar dengan benar. Seperti yang saya lihat menggunakan perintah tindak lanjut 'rm' berpotensi berbahaya dalam situasi itu. Jadi saya berharap untuk menyederhanakan hal-hal dengan membuat tar itu sendiri menghapusnya.
Misalnya, bayangkan skrip cadangan tempat direktori untuk mencadangkan (mis. Tar) dimasukkan sebagai variabel shell. Jika nilai variabel shell itu dimasukkan dengan buruk, ada kemungkinan bahwa hasilnya dapat dihapus file dari direktori apa pun yang Anda berada di terakhir.
Jawaban:
Anda kehilangan bagian yang mengatakan
--remove-files
opsi menghapus file setelah menambahkannya ke arsip.Anda dapat mengikuti operasi arsip dan penghapusan file dengan perintah seperti,
Pembaruan: Anda mungkin tertarik untuk membaca diskusi Debian pendek ini,
Bug 424692: --remove-file mengeluh bahwa direktori "berubah ketika kita membacanya" .
sumber
-c
mengubah direktori sebelumtar
memulai pekerjaannya (dan jenis tidak kembali sampai selesai)? Saya kira itu akan menghapus subdirektori, jika itu termasuk dalam arsip (tapi saya belum mengujinya).c'
ada hubungannya dengan ini;'remove-files'
sengaja tidak menghapus direktori.man
halaman - halaman yang tidak terlalu jelas tentang itu, tetapi saya menganggap Anda benar. Namun, saya tidak berharap direktori yang disebutkan untuk-c
dihapus bahkan jikatar
memang menghapus direktori juga. (Bagi saya, itu akan seperti menghapus direktori saat ini, maka termasuk arsip itu sendiri, ketika tidak menggunakan-c
...?) Tetapi jika-remove-files
selalu meninggalkan direktori di tempat maka saya pasti hanya mempersulit hal-hal di sini. ;-)--remove-files
bug telah diperbaikitar-1.19
.Karena
--remove-files
opsi hanya menghapus file , Anda dapat mencobasehingga direktori dihapus hanya jika
tar
mengembalikan status keluar dari 0sumber
rmdir
hanya menghapus direktori kosong . Idenya adalah untuk menghapus direktori dan file di dalamnya (asalkantar
berhasil)--remove-files
bug telah diperbaikitar-1.19
.Sudahkah Anda mencoba menempatkan --remove-file directive setelah nama arsip? Ini bekerja untuk saya.
sumber
--remove-files
sebelum atau sesudahmy_directory
; dalam kedua kasus, direktori dihapus.--remove-files
bug telah diperbaikitar-1.19
.misalnya
misalnya
Kemudian Anda dapat menjalankan sesuatu di sepanjang baris:
sumber
Ini mungkin bug.
Juga kata "file" ambigu dalam hal ini. Tetapi karena ini adalah saklar baris perintah yang saya harapkan berarti juga direktori, karena di unix / lnux semuanya adalah file, juga direktori. (Penafsiran lain tentu saja juga valid, tetapi tidak masuk akal untuk menyimpan direktori dalam kasus seperti itu. Saya akan menganggapnya sebagai perilaku yang tidak terduga dan membingungkan.)
Tetapi saya telah menemukan bahwa di gnu tar pada beberapa distribusi gnu tar sebenarnya menghapus pohon direktori. Indikasi lain bahwa menjaga pohon itu adalah bug. Atau setidaknya beberapa solusi sampai mereka memperbaikinya.
Inilah yang saya coba pada konsol Ubuntu 10,04:
Jika Anda ingin melihatnya di komputer Anda, rekatkan ini ke konsol dengan risiko Anda sendiri:
sumber