
So machen Sie aus einem Streaming (in einem Befehl oder Skript) eine Aufgabe für:
- Vergleichen Sie den Inhalt (Dateien und Ordner) der beiden Verzeichnisse dir1 und dir2
- Wenn neue Dateien im Verzeichnis dir1 erscheinen, beginnen Sie mit dem Kopieren dieser in dir2 und verarbeiten Sie sie gleichzeitig mit einem Handler:
diff -> kopieren -> ausführen some.sh
Antwort1
Listen Sie den Inhalt von dir1 mit dem folgenden Befehl in file1.txt auf.
ls -ltr | awk '{print $9}' > /var/tmp/file1.txt
file1.txt enthält diesen Inhalt
t1
1
l.sh
r.txt
l.py
l.txt
p.txt
Listen Sie den Inhalt von dir2 mit dem folgenden Befehl in file2.txt auf.
ls -ltr | awk '{print $9}' > /var/tmp/file2.txt
t1
1
l.sh
r.txt
l.py
l.txt
Dieser Befehl findet nun den Inhalt, der in file2.txt im Vergleich zu file1.txt nicht vorhanden ist, um ihn in das Verzeichnis 2 zu kopieren
awk 'NR==FNR {a[$1];next}!($1 in a) {print $1}' file2.txt file1.txt |
awk '{print "cp -rvfp" " " "directory1path”$1 " " "directory2path"}' |
sh
Antwort2
Sie können dies auf zwei Arten tun:
Verwenden von Softlinks
Verwenden Sie diesen Befehl, um eine weitere Kopie der Quelle im Zielordner zu erhalten
ln -s source destination
In diesem Fall ist der Link jedoch unterbrochen, sobald die Quelldatei oder das Quellverzeichnis gelöscht wird, und Sie können nicht mehr darauf zugreifen.
Verwenden von rsync
rsync -avzh sourcepath destinationpath
Dieser Befehl synchronisiert Quelle und Ziel automatisch. Planen Sie für diesen Befehl eine Crontab für 1 Minute ein, damit er kontinuierlich prüft und aktualisiert.