Zip-Archiv erstellen, Sonderfälle

1

Wie kann ich in einer Linux Distribution eine Zip erstellen und
- Behalten Sie nur den relativen Pfad zu einem Ordner
- Legen Sie einige Dateien in einem separaten Ordner in der Zip

Ich muss dies in einem Bash-Skript tun. Wenn ich also nur den absoluten Pfad verwende, befindet sich der gesamte Pfad im Zip.

Beispiel

/home/user/folder/1.txt
/home/user/folder/2.txt

Ausgang brauchen es:

test.zip
folder/1.txt
folder/secondfolder/2.txt
danidacar
quelle
1
In welcher Beziehung steht die Ausgabe zum Beispiel?
Ignacio Vazquez-Abrams
Könnte dies besser für ServerFault geeignet sein? Es scheint mir eher eine Sysadmin-Frage als eine Programmierfrage zu sein.
ssokolow

Antworten:

1
( cd /var/www ; zip -r - test1 ) > output.zip
Ignacio Vazquez-Abrams
quelle
Dies ist unabhängig von Duplikat +1 richtig
RobotHumans
0

Tut find . ! -name "*.zip" -type f -print | zip test -@ Tun Sie, was Sie wollen?

Charles Stewart
quelle
zip ist in der Lage, einen Pfad für sich zu rekursieren.
Ignacio Vazquez-Abrams
Ich habe die Frage aktualisiert. Das brauche ich nicht.
danidacar
@Nutzer, Ich habe die Frage aktualisiert - "need it" hinzuzufügen ist kaum ein Update! (Bitte kommen Sie auch mit einem besseren Titel?)
Arjan
@Ignacio und Charles, also vielleicht zip -r -x *.zip würde das gleiche erreichen?
Arjan
0

Warum erstellen Sie nicht einfach die gewünschte Verzeichnisstruktur, komprimieren sie und entfernen sie dann?

cd ~/
mkdir backup1
cp /var/www/test/* backup1/
zip -r output.zip ~/backup1
rm -r backup1
dr jimbob
quelle
Weil ich an Befehlszeilenflexibilität gewöhnt bin und dachte, ich vermisse etwas. Guter Tipp.
danidacar
Mit man zip können Sie anscheinend keine Verzeichnisse erstellen. Wenn Sie in einer Zeile tun möchten; Nur cp / var / www / test / * backup1 / & amp; & amp; zip -rm output.zip backup1 / (m für das Verschieben der Dateien) Teil muss nicht Feature-Bloat haben; Es gibt keinen wirklichen Grund dafür, dass zip Dateien / Verzeichnisse erstellt, die nicht existieren, wenn Sie dies mit anderen Befehlen problemlos tun können.
0

$ ln -s / var / www / test backup1
$ zip -r backup1 -j backup1 / *

Akzeptabel?

Huang F. Lei
quelle
Sie verschrotten die Verzeichnisse und erstellen dabei einen neuen Sim-Link. Ich denke nicht, dass dies optimal ist. Trotzdem danke.
danidacar