Ubah direktori kerja


13

Saya mencoba mengompres direktori di

/home/cyrus/sql

Dan saya ingin mengubah direktori kerja ketika zip folder:

/ $ zip -b /home/cyrus sql.zip /home/cyrus/sql

Tetapi ketika saya memeriksa file zip:

/ $ unzip -l sql.zip

Archive:  sql.zip
  Length      Date    Time    Name
---------  ---------- -----   ----
        0  2013-05-30 10:59   home/cyrus/sql/
  1776642  2013-05-23 10:22   home/cyrus/sql/wordpress.sql
---------                     -------
  1776642                     2 files

Folder root seharusnya sql. Apa yang telah saya lakukan salah?

Jawaban:


10

Dari man zip:

-b path

 --temp-path path

Gunakan jalur yang ditentukan untuk arsip zip sementara. Sebagai contoh:

zip -b /tmp stuff *

akan menempatkan arsip zip sementara di direktori / tmp, menyalin lebih dari stuff.zip ke direktori saat ini ketika selesai. Opsi ini berguna ketika memperbarui arsip yang ada dan sistem file yang berisi arsip lama ini tidak memiliki cukup ruang untuk menyimpan arsip lama dan baru pada saat yang bersamaan. Mungkin juga berguna saat streaming dalam beberapa kasus untuk menghindari kebutuhan deskriptor data. Perhatikan bahwa menggunakan opsi ini mungkin memerlukan waktu tambahan zip untuk menyalin file arsip ketika dilakukan ke sistem file tujuan.

Secara default zipmenyimpan path lengkap relatif ke direktori saat ini. Jika Anda ingin zipfile memiliki sqldirektori Anda sebagai root, Anda harus menjalankan perintah dari /home/cyrusdirektori.


14

Jika Anda ingin zipkonten direktori yang diberikan dan menyimpan zipfile di direktori saat ini, Anda dapat menulisnya:

(cd /some/dir && zip -r - dir-there) > file.zip

5

-bmenentukan di mana zipharus meletakkan file sementara, bukan itu harus mengubah direktori di suatu tempat. Dari man zip:

 -b path
      Use the specified path for the temporary  zip  archive.

Coba ini:

cd /home/cyrus && zip sql.zip sql

Atau cd /home/cyrus && zip /sql.zip sqljika Anda ingin file zip dibuat di root.
tripleee

2

tidak yakin apakah saya mengerti ini benar tetapi -b tidak akan mengubah folder root. Ini akan menempatkan arsip zip sementara di direktori / home / cryus, menyalin lebih dari sql.zip ke direktori saat ini ketika selesai. Opsi ini hanya berguna ketika memperbarui arsip yang ada, dan sistem file yang mengandung arsip lama ini tidak memiliki cukup ruang untuk menyimpan arsip lama dan baru pada saat yang bersamaan.

coba gunakan:

-j Simpan hanya nama file yang disimpan (junk the path), dan jangan menyimpan nama direktori. Secara default, zip akan menyimpan path lengkap (relatif terhadap path saat ini).


1
-jmungkin tidak benar; Saya akan berasumsi OP ingin menjaga jalur relatif, tidak menghapus semua jalur.
tripleee

2

Terinspirasi oleh jawaban Stephane:

(cd /home/cyrus; zip -r sql.zip sql;)

Hasil:

  1. Anda memiliki sql.zip di / home / cyrus /
  2. sql.zip berisi sql / direktori dan semua kontennya
  3. Anda PWD awal tidak berubah

4
Bagaimana ini lebih baik?
Stephen Rauch

0

Mungkin lebih mudah untuk menyinkronkan folder yang Anda coba zip ke direktori saat ini. Dengan begitu Anda bisa tetap di tempat Anda sekarang.

ln -s /path/to/whatever .
zip -r myzip whatever

Mereka symlink jika Anda inginkan.

Dengan menggunakan situs kami, Anda mengakui telah membaca dan memahami Kebijakan Cookie dan Kebijakan Privasi kami.
Licensed under cc by-sa 3.0 with attribution required.