Cambia directory di lavoro


13

Sto cercando di comprimere una directory in

/home/cyrus/sql

E volevo cambiare la directory di lavoro quando comprimi la cartella:

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

Ma quando controllo il 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

La cartella principale avrebbe dovuto essere sql. Cosa ho fatto di sbagliato?

Risposte:


10

Da man zip:

-b path

 --temp-path path

Utilizzare il percorso specificato per l'archivio zip temporaneo. Per esempio:

zip -b /tmp stuff *

inserirà l'archivio zip temporaneo nella directory / tmp, una volta copiato su stuff.zip nella directory corrente. Questa opzione è utile quando si aggiorna un archivio esistente e il file system che contiene questo vecchio archivio non ha abbastanza spazio per contenere sia i vecchi che i nuovi archivi contemporaneamente. Può anche essere utile durante lo streaming in alcuni casi per evitare la necessità di descrittori di dati. Si noti che l'utilizzo di questa opzione può richiedere che zip impieghi più tempo per copiare il file di archivio quando fatto nel file system di destinazione.

Per impostazione predefinita, zipmemorizza il percorso completo relativo alla directory corrente. Se vuoi che il tuo file zip abbia la tua sqldirectory come root, dovrai eseguire il comando dalla /home/cyrusdirectory.


14

Se si desidera zipil contenuto di una determinata directory e memorizzare il zipfile nella directory corrente, è possibile scriverlo:

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

5

-bspecifica dove zipinserire i file temporanei, non che dovrebbe cambiare directory da qualche parte. Da man zip:

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

Prova questo:

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

O cd /home/cyrus && zip /sql.zip sqlse si desidera creare il file zip nella radice.
triplo

2

non sono sicuro di aver capito bene ma -b non cambierà la cartella principale. Metterà l'archivio zip temporaneo nella directory / home / cryus, una volta copiato su sql.zip nella directory corrente. Questa opzione è utile solo quando si aggiorna un archivio esistente e il file system che contiene questo vecchio archivio non ha abbastanza spazio per contenere sia i vecchi che i nuovi archivi contemporaneamente.

prova ad usare:

-j Memorizza solo il nome di un file salvato (junk the path) e non memorizza i nomi delle directory. Per impostazione predefinita, zip memorizzerà il percorso completo (relativo al percorso corrente).


1
-jpotrebbe non essere giusto; Suppongo che l'OP voglia mantenere percorsi relativi, non rimuovere tutti i percorsi.
triplo

2

Ispirato dalla risposta di Stephane:

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

Il risultato:

  1. hai un sql.zip in / home / cyrus /
  2. sql.zip contiene sql / directory e tutto il suo contenuto
  3. il tuo PWD iniziale non cambia

4
Come va meglio?
Stephen Rauch,

0

Potrebbe essere più semplice collegare simbolicamente la cartella che si sta tentando di comprimere alla directory corrente. In questo modo puoi rimanere dove sei.

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

Se lo desideri, sono il link simbolico.

Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.