Streaming vergleicht den Inhalt in zwei Verzeichnissen

Streaming vergleicht den Inhalt in zwei Verzeichnissen

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:

  1. 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.

  2. 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.

verwandte Informationen