Dadurch werden Geräteknoten, Berechtigungen und Zeitstempel kopiert. Ich bin mir ziemlich sicher, dass die Option -H bei --files-from nicht korrekt ist
So legen Sie dies als Remote-Filter fest:rsync -avn --files-from=<(ssh user@A 'find /path/on/A/ -mtime -7 -type f -exec basename {} \;') user@A:/path/on/A/ user@B:targetdir
Cybertoast
Ich möchte eine Korrektur für den Kommentar von Cybertoast hinzufügen. Vielleicht unterscheidet sich der Kontext von meinem, aber ich habe versucht, Dateien anhand der Zeitkriterien einfach von einem Remote-Server zu extrahieren. Also ist Server A mein Ziel und Server B meine Quelle, dann: rsync -avn --files-from = <(SSH-Benutzer @ A 'find / path / on / A / -mtime -7 -type f -exec basename {} \; ') Benutzer @ B: / / Pfad / in / Server / A Hinweis: Es gibt nur ein führendes / für die Quelle. Das --files-from kümmert sich für Sie um den relativen Pfad. Wenn Sie Zweifel haben, verwenden Sie man rsync und lesen Sie den Abschnitt --files-from.
Einarc
@cybertoast Was basenamebedeutet in Ihrem Befehl? Kannst du bitte erklären?
Kemat Rochi
@KematRochi - "basename, dirname - Dateiname oder Verzeichnisanteil des Pfadnamens zurückgeben". Hoffentlich hilft das.
Cybertoast
6
Ich habe dieses Skript basierend auf dem Kommentar von cybertoast geschrieben, mit dem von einem Remote-Server auf lokal synchronisiert werden soll.
Sie können das Skript mit ./script.sh 3oder ./script.sh 3 dryfür einen Probelauf aufrufen .
#!/bin/bash
TIME=$1
DRYRUN=$2
if [[ -z $TIME ]]; then
echo "Error: no time argument."
echo "Please enter the number of days to sync."
exit 1
fi
if [[ $DRYRUN = "dry" ]]; then
DRYRUNCMD="--dry-run"
echo "Dry run initiated..."
fi
rsync -avz $DRYRUNCMD --files-from=<(ssh \
user@remote "find path/to/data/ \
-mtime -$TIME ! -name *.mkv -type f \
-exec ls $(basename {}) \;") \
user@remote:. .
Antworten:
Dies sollte Sie auf solide Weise in Gang bringen
Dadurch werden Geräteknoten, Berechtigungen und Zeitstempel kopiert. Ich bin mir ziemlich sicher, dass die Option -H bei --files-from nicht korrekt ist
quelle
rsync -avn --files-from=<(ssh user@A 'find /path/on/A/ -mtime -7 -type f -exec basename {} \;') user@A:/path/on/A/ user@B:targetdir
basename
bedeutet in Ihrem Befehl? Kannst du bitte erklären?Ich habe dieses Skript basierend auf dem Kommentar von cybertoast geschrieben, mit dem von einem Remote-Server auf lokal synchronisiert werden soll.
Sie können das Skript mit
./script.sh 3
oder./script.sh 3 dry
für einen Probelauf aufrufen .quelle