Wie von Bichoy angegeben, können Sie mit dem find
Befehl Dateien mit einer bestimmten Zugriffs-, Erstellungs- und Änderungszeit suchen. -Mtime nimmt jedoch einen Versatz in Schritten von 24 Stunden vor und ist nicht immer bequem zu berechnen, es sei denn, Sie möchten etwas von einer bestimmten Anzahl von 'Tagen' vor. Sie müssen dies kombinieren, -daystart
um dies auf den Anfang des Tages abzurunden.
Ich denke, in Ihrem Fall ist die Option -newermt praktischer, die einen Datenstring verwendet (und nicht den Namen einer Referenzdatei wie die meisten -newerXY-Versionen).
Kombinieren Sie dies mit find
der -print0
Option, Dateien mit Leerzeichen im Namen zu verarbeiten und optional -type f
keine Verzeichnisse in dem Zeitraum abzurufen, an dem Sie interessiert sind:
find /var/lib/edumate/backup/archive_logs/db2inst1/SAAS \
-newermt 20130310 -not -newermt 20130314 -type f -print0 \
| xargs -0 tar -cvzf /tmp/saas_archive_logs.tar.gz
Dabei gibt es ein großes Problem: Wenn die Anzahl der gefundenen Dateien zu lang wird, xargs
wird der Befehl (in diesem Fall tar
) mehrmals xargs
aufgerufen, um die Argumente in der Befehlszeile anzupassen, die nicht unendlich sind. Um das zu umgehen, benutze ich immer das cpio
, das Dateinamen von stdin liest. Mit dem --format=ustar
Parameter zum Abrufen einer POSIX-TAR-Datei und in Ihrem Fall müssten Sie die Ausgabe durchleiten gzip
, um das gewünschte Ergebnis zu erzielen:
find /var/lib/edumate/backup/archive_logs/db2inst1/SAAS \
-newermt 20130310 -not -newermt 20130314 -type f -print0 \
| cpio --create --null --format=ustar \
| gzip > /tmp/saas_archive_logs.tar.gz