Wie kann ich einen Symlink komprimieren?

57

Ist es möglich und wie kann ich einen Symlink aus einer Linux-Shell zippen?

DucDigital
quelle

Antworten:

68

Sie können Symlinks als Symlinks speichern (im Gegensatz zu einer Kopie der Datei / des Verzeichnisses, auf die / das verwiesen wird), indem Sie den --symlinksParameter des Standards verwenden zip.

Angenommen, fooein Verzeichnis enthält Symlinks:

zip --symlinks -r foo.zip foo/

Seltenes Äquivalent:

rar a -ol foo.rar foo/

tar speichert sie standardmäßig so wie sie ist.

tar czpvf foo.tgz foo/

Beachten Sie, dass der Symlink selbst fast keinen Speicherplatz belegt (nur eine Inode). Es ist nur eine Art Zeiger im Dateisystem, wie Sie wahrscheinlich wissen.

Eduardo Ivanec
quelle
1
Ich kann nicht tar verwenden, aber die --symlinks funktioniert nicht mit zip. Sind Sie sicher, dass dies das Standard-Zip-Paket ist?
DucDigital
Welche Distribution hast du? Copyright (c) 1990-2008 Info-ZIP - Type 'zip "-L"' for software license. Zip 3.0 (July 5th 2008).Können Sie stattdessen rar verwenden? Siehe hinzugefügtes Beispiel.
Eduardo Ivanec
Copyright (c) 1990-2006 Info-ZIP. Alle Rechte vorbehalten. Dies ist wahrscheinlich Zip 2.32. Ich werde rar versuchen
DucDigital
1
Das Teilen von Haaren, aber technisch belegt der Symlink Speicherplatz und verbraucht eine Inode.
ttyS0
Das stimmt. Nach dem, was ich in der Vergangenheit gelesen habe, waren sie sogar eher normale Dateien, die den Pfad zu der Datei / dem Verzeichnis enthielten, auf die / das verwiesen wurde. Jetzt sind sie nur eine besondere Art von Inode, wenn ich mich richtig erinnere.
Eduardo Ivanec
10

Auf RHEL 5 haben wir

$ zip -h
Copyright (C) 1990-2005 Info-ZIP
Type 'zip "-L"' for software license.
Zip 2.31 (March 8th 2005). Usage:
zip [-options] [-b path] [-t mmddyyyy] [-n suffixes] [zipfile list] [-xi list]
(snip)
  -y   store symbolic links as the link instead of the referenced file
nodakai
quelle
Gleiches gilt für OpenSUSE Leap. So ist es in der Tat zip -y -r foo.zip foo/.
David Faure