Untuk menetapkan itu sebagai filter jarak jauh: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
Saya ingin menambahkan koreksi untuk komentar cybertoast. Mungkin konteksnya berbeda dengan milik saya, tetapi saya mencoba mengekstrak file sederhana dari server jauh dengan kriteria waktu. Jadi, server A adalah tujuan saya dan server B adalah sumber saya, kemudian: rsync -avn --files-from = <(ssh user @ A 'find / path / on / A / -mtime -7 -type f -exec basename {} \; ') pengguna @ B: / / path / in / server / A Pemberitahuan hanya ada sumber terkemuka / untuk. --Files-from merawat jalur relatif untuk Anda. Jika Anda ragu gunakan man rsync dan lihat bagian --files-from.
einarc
@cybertoast Apa basenameartinya dalam perintah Anda? Bisakah Anda jelaskan?
Kemat Rochi
@KematRochi - "basename, dirname - mengembalikan nama file atau bagian direktori dari pathname". Semoga itu bisa membantu.
cybertoast
6
Saya menulis skrip ini berdasarkan komentar cybertoast untuk melakukan sinkronisasi dari server jauh ke lokal.
Anda dapat memanggil skrip dengan ./script.sh 3atau ./script.sh 3 dryuntuk lari kering.
#!/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:. .
Jawaban:
Ini akan membuat Anda berjalan dengan solid
Perangkat ini menyalin node, izin, cap waktu. Saya cukup yakin opsi -H tidak akan akurat dengan --files-from
sumber
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
artinya dalam perintah Anda? Bisakah Anda jelaskan?Saya menulis skrip ini berdasarkan komentar cybertoast untuk melakukan sinkronisasi dari server jauh ke lokal.
Anda dapat memanggil skrip dengan
./script.sh 3
atau./script.sh 3 dry
untuk lari kering.sumber