Ini seharusnya sangat sederhana bagi para ahli di sini.
Saya memiliki akun Linux dengan kuota disk pengguna hanya 6GB. Ada beberapa folder data /opt
dengan sekitar 3GB data dengan ketika dikompresi muncul 1GB. Ada beberapa tautan simbolis di dalamnya data-folder
. Biasanya untuk mengambil cadangan pekerjaan saya biasa melakukan hal berikut.
cp -rvfL /opt/data-folder ~/
cd ~/
tar -zcvf data-folder.tar.gz data-folder
rm -rvf data-folder
Sekarang saya sudah mengkonsumsi 2,5GB dalam kuota disk pengguna saya, saya hanya memiliki cukup ruang untuk menyalin file ke rumah saya, tetapi tidak untuk tar
itu lagi.
Apakah ada cara untuk tar dan salin folder dengan dalam satu perintah, katakan dengan menggunakan pipa.
PS Saya tidak bisa tar /opt
karena saya hanya memiliki akses baca /opt
.
cd /opt; tar zcf $HOME/junk.tar.gz junk
,.Jawaban:
Anda ingin membuat file tar jauh dari tempat file yang Anda perlu tar berada?
Ada banyak cara untuk melakukan ini.
Jika ingin dibuat secara lokal (= pada mesin yang sama):
Anda dapat menambahkan file tambahan atau direktori ke tar di akhir perintah itu.
Jika ingin dibuat dari jarak jauh (yaitu, Anda ingin membuat file tar pada host jarak jauh dari yang berisi data yang akan ditala):
Versi yang lebih baru sangat serbaguna. Misalnya Anda juga bisa "menduplikasi" direktori + subdir menggunakan teknik yang sama:
Gandakan subdirektori direktori + ke direktori lokal lain:
Gandakan subdirektori direktori + ke direktori jarak jauh lain:
Lepaskan 'v' jika Anda tidak memerlukannya untuk menampilkan file karena file tersebut ter-tar (atau tidak ditandai): maka akan berjalan lebih cepat, tetapi tidak akan banyak bicara kecuali ada kesalahan.
Saya menggunakan "./ ..." untuk sumber memaksa tar untuk menyimpannya sebagai jalur RELATIF. Dalam beberapa kasus, Anda ingin menambahkan informasi jalur tambahan:
Sebagai contoh untuk tar file crontab, termasuk yang ada di / etc, Anda bisa melakukan:
Saya sengaja menggunakan jalur relatif: beberapa versi tar LAMA mungkin berbahaya dan mengekstrak file dengan jalur GLOBAL aslinya, artinya Anda dapat melakukannya:
cd /safedir ; tar xvf sometar
dan meminta file dengan nama global menimpa file di jalur aslinya, yang berada di luar / safedir dan tidak di bawahnya! Sangat berbahaya, dan masih mungkin karena ada server produksi lama di luar sana. Lebih baik digunakan untuk menggunakan jalur relatif sepanjang waktu, bahkan jika Anda menggunakan tar yang lebih baru.sumber
-cvf
bukannyacvf
, yang lain tidak akan mengenali-
gaya. Danz
dulu berarti "kompres dengan 'kompres'", tetapi pada tar 'baru-baru ini' itu berarti "kompres dengan gzip". Anda bisa tahu mana kompresi digunakan pada file dengan:file zefile
. Dan kemudian ganti nama sesuai (jika penggunaan tar Andacompress
, itu sebaiknya diganti namanya .tar.Z bukan .tar.gz)Gunakan
-h
opsi tar. Dari halaman manual:jadi kamu bisa menggunakan
tar -zcvfh data-folder.tar.gz /opt/data-folder
sumber
bsdtar
sebagai gantinya, ataupax
(cd /opt && pax -Lw data-folder | gzip > ~/data-folder.tar.gz
) yang akan mendeteksi looptar -rf <tarfilename> <filename>
untuk menambah file tar yang ada.