2014-06-29 8 views
5

Wenn ein komprimiertes Archiv mit Tausenden von Dateien darin enthalten ist, was ist der beste Weg, Dateien darin aus einem Shell-Skript zu löschen/ersetzen?Wie erstellt man Archive unter Linux, die das Ersetzen/Löschen von Dateien unterstützen?

tar unterstützt nicht den Austausch von Dateien im Archiv, und "dekomprimieren und erneut komprimieren" Weg zum Ersetzen einer einzigen Datei in einem großen Archiv scheint nicht der optimale Weg.

xz wie es scheint, unterstützt diese Option auch nicht.

7z ist auch nicht für diese Aufgabe geeignet (Man Seite für 7z empfiehlt nicht, es für die Komprimierung einzelner Dateien zu verwenden, nur zum Komprimieren von TAR-Dateien, aufgrund von Problemen mit Dateiinhaber/Gruppe Informationen zu erhalten).

pax hat auch keine Optionen zum Löschen/Ersetzen von Dateien im Archiv.

Gibt es unter Linux eine gängige Methode zum Erstellen solcher Archive über die Befehlszeile?

+2

Es gibt keinen optimalen Weg, nur einige mittelmäßige bis schlechte Wege. –

+0

Warum muss es ein Archiv sein? Wenn Sie Dateien löschen/ersetzen müssen, sind Sounds wie ein Archiv nicht der richtige Weg. – Pavel

+2

Dieses Problem ist allgemeiner als Sie denken, und es existiert auch auf jeder anderen Plattform. Wenn Sie mehrere Dateien in ein einziges Archiv komprimieren, ist das Entfernen (oder Aktualisieren) eine teure Operation (weil Sie alles entpacken, das Update durchführen oder löschen und dann alles komprimieren müssen). Sonst ist es * kein gültiges Archiv mehr. –

Antwort

2

Ich denke, Sie sollten ernsthaft in Betracht ziehen, ZFS oder jedes andere erweiterte Dateisystem zu verwenden. Dies ermöglicht es Ihnen zu

  • inkrementelle Backups erstellen (über Snapshots)
  • Ändern von Dateien innerhalb Sicherungen
  • alles über die Kommandozeile verwalten (Cronjobs etc.)
  • Verwendung Kompression
  • bewegen Backups auf verschiedenen Geräten
  • Verwendung verschiedene RAID-Level, wenn Sie mehr Sicherheit benötigen

ZFS läuft perfekt unter Solaris, aber es gibt bereits einen stabilen Port für Linux.

+0

Vielen Dank für den Link. Ich habe jedoch speziell nach Archiven gefragt, weil die Archivdateien auch von Windows aus zugänglich sein sollten (sie sind tatsächlich auf dem NTFS-Dateisystem gespeichert). –

+0

können Sie die ZFS-Volumes über NFS zugänglich machen (das ist mehr oder weniger der normale Weg für Dateiserver) oder ein Tool wie zfs-win auf dem Windows-Rechner installieren – Pavel

+0

Scheint wie ein noch mehr Aufwand als Dekomprimieren-Komprimieren. Es ist wahrscheinlich einfacher, eine Sicherung von Windows durchzuführen. –