Paket file dengan tar.gz dari direktori root

8

Saya mencoba untuk mengemas file .csv dengan tar.gz, saat berada di direktori root.

File myfile.csvini terletak di /mnt/sdb1/ Jadi nama file lengkapnya adalah/mnt/sdb1/myfile.csv

Saya mencoba menyimpan tar.gz di bawah /mnt/sdb1/old_files

Saya mencobanya seperti ini:

tar -czf /mnt/sdb1/old_files/new.tar.gz mnt/sdb1/myfile.csv

Tetapi ketika saya mengekstrak file, maka folder dengan nama "mnt" akan diekstraksi yang berisi folder lain yang disebut "sdb1", yang berisi file tersebut.

Apakah mungkin untuk mengkompres file saja, alih-alih menyalin semua direktori?

Hitam
sumber

Jawaban:

12

gunakan --directoryopsi dari man tar:

-C, - -Direktori DIR

ubah ke direktori DIR

yaitu:

tar -C /mnt/sdb1/ -czf /mnt/sdb1/old_files/new.tar.gz myfile.csv
Fiximan
sumber
Fiximan terima kasih! Ini memecahkan masalah. Saya akan angkat suara segera setelah saya memiliki 15 reputasi.
Hitam
3

Anda harus terlebih dahulu cd /mnt/sdb1, kemudian meluncurkan tarperintah.

FYI, Anda tidak perlu menggunakan di tarsini karena tujuannya adalah untuk menggumpalkan beberapa file dalam tarball. Karena Anda hanya memiliki satu file di sini, gunakan saja gzip.

dr_
sumber
Saya tahu, tetapi saya harus melakukannya dari direktori root, karena saya menjalankan perintah dari skrip.
Hitam
1
Man, jadi tambahkan saja cdperintah sebelumnya tar, maka Anda dapat kembali, atau gunakan cd /mnt/sdb1 && tar -czf new.tar.gz myfile.csv && cd /jika Anda lebih suka satu baris cmd.
McSinyx
@ McSinyx Masalahnya adalah direktori tersebut tidak disimpan, bahkan ketika saya mengeksekusi cd /mnt/sdb1/maka saya akan berada di direktori root lagi pada eksekusi perintah berikutnya. Tetapi solusi kedua Anda terlihat logis bagi saya, saya mencobanya.
Hitam
@McSinyx BAGUS! Ini bekerja :) Terima kasih, ini akan SANGAT berguna!
Hitam
@ EdwardBlack Anda dapat menjalankan skrip dari mana saja, cukup tambahkan path absolut yang relevan. Secara umum, menggunakan jalur relatif adalah ide yang buruk karena dapat merusak segalanya dengan mudah.
dr_
1

Gunakan -Copsi untuk tar:

   -C Directory
        Causes the tar command to perform a chdir subroutine to the
        directory specified by the Directory variable.
Jeff Schaller
sumber