Aby ustawić to jako filtr zdalny: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
Chcę dodać poprawkę do komentarza cybertoast. Być może jego kontekst różni się od mojego, ale starałem się po prostu wyodrębnić pliki ze zdalnego serwera, biorąc pod uwagę kryteria czasowe. Tak więc serwer A jest moim miejscem docelowym, a serwer B jest moim źródłem, a następnie: rsync -avn --files-from = <(ssh użytkownik @ A 'find / path / on / A / -mtime -7 -type f -exec basename {} \; ') użytkownik @ B: / / path / in / server / A Zauważ, że jest tylko wiodące / źródło. Plik --files-from dba o ścieżkę względną. Jeśli masz wątpliwości, użyj man rsync i zobacz sekcję --files-from.
einarc
@cybertoast Co basenameoznacza twoje polecenie? Czy możesz to wyjaśnić?
Kemat Rochi
@KematRochi - "basename, dirname - zwraca nazwę pliku lub część ścieżki do katalogu". Mam nadzieję, że to pomaga.
cybertoast
6
Napisałem ten skrypt na podstawie komentarza cybertoast do synchronizacji ze zdalnego serwera na lokalny.
Możesz wywołać skrypt za pomocą ./script.sh 3lub ./script.sh 3 drydla suchego uruchomienia.
#!/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:. .
Odpowiedzi:
To powinno cię solidnie rozpocząć
Kopiuje węzły urządzeń, uprawnienia, znaczniki czasu. Jestem prawie pewien, że opcja -H nie będzie dokładna z opcją --files-from
źródło
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
oznacza twoje polecenie? Czy możesz to wyjaśnić?Napisałem ten skrypt na podstawie komentarza cybertoast do synchronizacji ze zdalnego serwera na lokalny.
Możesz wywołać skrypt za pomocą
./script.sh 3
lub./script.sh 3 dry
dla suchego uruchomienia.źródło