it-swarm.com.de

Finden Sie alle Dateien, die in den letzten 30 Tagen geändert wurden, und speichern Sie sie in einer TAR

Wir haben also einen Staging-Server ohne Git oder ein anderes Versionierungs-Tool.

Jetzt wollen wir die Änderungen auf das Live-System übertragen.

Ich habe über find nachgedacht und -exec verwendet.

Ich versuche das: find . -type f -mtime -30 -exec tar -czf changed.tar.gz {} \;

Es wird jedoch nur die letzte Datei hinzugefügt. Ich möchte es zu changed.tar.gz HINZUFÜGEN, anstatt es vollständig zu überschreiben. Wie kann ich das machen?

2
Max

Anstatt exec zu verwenden:

find . -type f -mtime -30  -exec tar -czf changed.tar.gz {} \;

Sie können pipe bis tar mit --files-from=- und --null:

find . -mtime -30 -type f -print0  | tar czf changed.tar.gz --files-from=- --null

--Null

       -T reads null-terminated names, disable -C

-T,
- Dateien aus DATEI

       get names to extract or create from FILE

Im obigen Beispiel lautet der Eingabedateiname - - die Eingabe von pipe

Sie können es auch pipe mit xargs

find . -type f -mtime -30 -print | xargs tar -czf changed.tar.gz
2
Yaron