(gelöst) rsync: Dateien nicht doppelt kopieren

Einrichten des lokalen Netzes, Verbindung zu anderen Computern und Diensten.
Antworten
katze123
Beiträge: 88
Registriert: 10.06.2016 20:05:47

(gelöst) rsync: Dateien nicht doppelt kopieren

Beitrag von katze123 » 19.11.2018 00:32:02

Ich kopiere den Download-Ordner meines Handys folgendermaßen auf den PC:

Code: Alles auswählen

rsync -r -v --progress <pfad_handy> <pfad_pc>
Die Dateien, die dadurch auf dem PC landen, sortiere ich meistens in irgendwelche Ordner ein, sodass sie unter <pfad_pc> nicht mehr vorhanden sind. Bei erneuter Ausführung des Befehls werden sie deshalb erneut kopiert. Wie kann ich dafür sorgen, dass eine einmal kopierte Datei in eine Liste eingetragen wird und bei zukünftigen Kopiervorgängen übersprungen wird?
Zuletzt geändert von katze123 am 22.11.2018 23:35:46, insgesamt 1-mal geändert.

Benutzeravatar
MSfree
Beiträge: 10727
Registriert: 25.09.2007 19:59:30

Re: rsync: Dateien nicht doppelt kopieren

Beitrag von MSfree » 19.11.2018 08:22:13

katze123 hat geschrieben: ↑ zum Beitrag ↑
19.11.2018 00:32:02
Wie kann ich dafür sorgen, dass eine einmal kopierte Datei in eine Liste eingetragen wird und bei zukünftigen Kopiervorgängen übersprungen wird?
Das geht nicht und dafür ist rsync auch nicht entwickelt worden.
Die Dateien, die dadurch auf dem PC landen, sortiere ich meistens in irgendwelche Ordner ein, sodass sie unter <pfad_pc> nicht mehr vorhanden sind. Bei erneuter Ausführung des Befehls werden sie deshalb erneut kopiert.
Works as designed.

Wenn du die Dateien löschst oder verschiebst, muß rsync halt erneut herunterladen.

cronoik
Beiträge: 2049
Registriert: 18.03.2012 21:13:42
Lizenz eigener Beiträge: GNU Free Documentation License

Re: rsync: Dateien nicht doppelt kopieren

Beitrag von cronoik » 19.11.2018 09:49:07

MSfree hat geschrieben: ↑ zum Beitrag ↑
19.11.2018 08:22:13
Das geht nicht und dafür ist rsync auch nicht entwickelt worden.
Man muesste doch ueber den filename tricksen koennen, da der TE anscheinend eher nur cp braucht statt rsync oder?
1. rsync benutzen
2. ls auf gesynctes append an exclude-Datei
3. katze123 sortiert weg
4. rsync mit exclude-Datei

Damit bekommt man allerdings Aenderungen an bereits gesyncten filenamen nicht mit.
Hilf mit unser Wiki zu verbessern!

Benutzeravatar
heisenberg
Beiträge: 3532
Registriert: 04.06.2015 01:17:27
Lizenz eigener Beiträge: MIT Lizenz

Re: rsync: Dateien nicht doppelt kopieren

Beitrag von heisenberg » 19.11.2018 09:57:12

Du könntest Dir natürlich etwas basteln, dass das so macht. Ich vermute aber, dass Dir das zu viel Arbeit sein wird.

"Eine Liste mit Dateien die nicht kopiert werden sollen" wäre bei rsync z. B. mit --exclude-from=DATEI.txt möglich.
Jede Rohheit hat ihren Ursprung in einer Schwäche.

Huo
Beiträge: 614
Registriert: 26.11.2017 14:03:31
Wohnort: Freiburg

Re: rsync: Dateien nicht doppelt kopieren

Beitrag von Huo » 19.11.2018 10:48:38

Man kann rsync per Option --log-file=LOG.txt eine Log-Datei anlegen lassen. Aus dieser Datei ließe sich, wenn ich das richtig sehe, eine brauchbare exclude-Datei generieren:

Code: Alles auswählen

awk '/>f+++++++++/ {print $5}' LOG.txt > EXCLUDE.txt

Benutzeravatar
MSfree
Beiträge: 10727
Registriert: 25.09.2007 19:59:30

Re: rsync: Dateien nicht doppelt kopieren

Beitrag von MSfree » 19.11.2018 11:07:11

heisenberg hat geschrieben: ↑ zum Beitrag ↑
19.11.2018 09:57:12
"Eine Liste mit Dateien die nicht kopiert werden sollen" wäre bei rsync z. B. mit --exclude-from=DATEI.txt möglich.
Das wird aber schnell häßlich, wenn man dort hunderte bis tausende Einträge verwalten und händisch aktuell halten soll.

tobo
Beiträge: 1989
Registriert: 10.12.2008 10:51:41

Re: rsync: Dateien nicht doppelt kopieren

Beitrag von tobo » 19.11.2018 14:06:10

Da offensichtlich ein Rechner vorhanden ist, muss man das ja nicht händisch einpflegen!? Je nach Beschaffenheit der Verzeichnisse, in die die Download-Dateien verteilt werden, könnte man über find eine Dateiliste (exclude.txt) erstellen. Wären das z.B. verschiedene Musik- oder pdf-Lese-Kategorien, dann wäre das sinnvoll. Bei wild versteuten Verzeichnissen im Dateisystem, die deutlich mehr Nicht-Download-(Kategorie)-Dateien enthalten, dann weniger. Läge hier also ein positiver Fall vor, dann würde man nach dem rsync einfach das find wiederholen und so die exclude-Datei für den nächsten Lauf aktualisieren. Andernfalls müsste man sich erstmal eine "aktuelle" exclude.txt erstellen und diese dann mittels bearbeiteter rsync-log-Datei oder umgeleiteter rsync-Ausgabe mit jedem rsync-Lauf erweitern. Die entscheidene Frage stellt sich also nach den Verzeichnissen, in die verteilt wird.

Benutzeravatar
jph
Beiträge: 1049
Registriert: 06.12.2015 15:06:07
Lizenz eigener Beiträge: MIT Lizenz
Wohnort: Greven/Westf.

Re: rsync: Dateien nicht doppelt kopieren

Beitrag von jph » 20.11.2018 17:24:47

katze123 hat geschrieben: ↑ zum Beitrag ↑
19.11.2018 00:32:02
Die Dateien, die dadurch auf dem PC landen, sortiere ich meistens in irgendwelche Ordner ein, sodass sie unter <pfad_pc> nicht mehr vorhanden sind. Bei erneuter Ausführung des Befehls werden sie deshalb erneut kopiert. Wie kann ich dafür sorgen, dass eine einmal kopierte Datei in eine Liste eingetragen wird und bei zukünftigen Kopiervorgängen übersprungen wird?
Workaround: kopiere die Dateien mit --reflink in irgendwelche Ordner, damit sie im ursprünglichen Verzeichnis verbleiben, aber nur einmalig Platz belegen.

Ansonsten könntest du die bereits mehrfach vorgeschlagene Exclude-Datei mit einem kleinen Shellscript erzeugen: irgendwas mit find, dann den Dateinamen isolieren und in eine Datei schreiben lassen.

katze123
Beiträge: 88
Registriert: 10.06.2016 20:05:47

Re: rsync: Dateien nicht doppelt kopieren

Beitrag von katze123 » 22.11.2018 23:35:00

Danke für eure Antworten! Ich habe nun Folgendes in mein Shellscript geschrieben:

Code: Alles auswählen

rsync -r -v --progress --log-file=log.txt --exclude-from=exclude.txt <pfad_handy> <pfad_pc>
awk '/>f+++++++++/ {print $5}' log.txt > exclude.txt
Alles ist jetzt so, wie es sein soll :D

Antworten