2012-04-02 15 views
3

Ich habe einen Server, dessen Dateien von Zeit zu Zeit geändert werden.Kopieren/Tarieren von Dateien, die in den letzten 14 Tagen geändert wurden

Wir möchten einen Skript- oder Cron-Job haben, der alle 7 Tage läuft und alle php-Dateien findet, die in den letzten 14 Tagen geändert oder erstellt wurden und sie in eine tar- oder zip-Datei auf dem Server stellen heruntergeladen werden.

Dieser Befehl findet die richtigen Dateien:

find . -name "*.php" -mtime -14 -print 

Was muss ich tun?

Antwort

4

, wenn Ihre Liste von Dateien aus Fund Ausgabe korrekt ist nur eine Pipe an Teer:

find . -name "*.php" -mtime -14 -print | xargs tar cvf backup.tar 

Sie sollten tar-Optionen beim Menschen überprüfen. Sie könnten zum Beispiel -p verwenden (Berechtigungen beibehalten), suchen Sie einfach nach nützlichen Optionen in man und verwenden Sie, was Sie brauchen.

und es hinzuzufügen, um die einfachste Art und Weise, wenn Ihre Distribution es zu cron unterstützt, ist das Skript setzen in:

crontab -e 

und setzen:

/etc/cron.weekly 

sonst Sie crontab modfiy haben gibt es eine Zeile wie:

0 3 * * 6 <user> <your script> 

es jeden samstag einen Skript um 3 Uhr morgens läuft, die letzte Skript Tag der Woche ist, 0 oder 7 ist Sonntag.

man 5 crontab:

field   allowed values 
      -----   -------------- 
      minute   0-59 
      hour   0-23 
      day of month 1-31 
      month   1-12 (or names, see below) 
      day of week 0-7 (0 or 7 is Sun, or use 
      names) 
5

Cron ist gut.

Sie möchten vielleicht GNU tar - Dateien-von; Xargs ist hier gefährlich. Xargs ist in Ordnung, wenn bekannt ist, dass die Anzahl der Dateien immer klein ist, aber wenn die Liste der Dateien groß wird, werden die XARGs, die tar neu starten, alle bis auf die letzten n Dateien anstoßen.

+1

Ich ermutige auch, --files-from zu verwenden, und Sie sollten auch '-print0' anstelle von '-print' und die entsprechende Option' -null' für 'tar' verwenden. Vollständiges Beispiel: 'finden. -name "* .php" -mtime -14 -print0 | tar -acf /path/to/backup.tgz --null --files-from = -'. – nosid

Verwandte Themen