116 votes

Comment RSYNC un seul fichier ?

Actuellement, je ne fais que RSync-er le Directories comme :

* * * * * rsync -avz /var/www/public_html/images root@<remote-ip>:/var/www/public_html

Alors comment je fais rsync un seul fichier comme, /var/www/public_html/.htaccess ?

178voto

Michael Place Points 687

Vous procédez de la même manière que pour un répertoire, mais vous spécifiez le chemin complet du nom de fichier comme source. Dans votre exemple :

rsync -avz   --progress  /var/www/public_html/.htaccess root@<remote-ip>:/var/www/public_html/

Comme mentionné dans les commentaires : depuis -a comprend Récupérer une petite faute de frappe peut entraîner un transfert complet de l'arborescence des répertoires, donc une approche plus sûre serait d'utiliser simplement -vz ou le remplacer par -lptgoD .

17voto

Dasun Points 10555

Syntaxe de base

rsync options source destination

Exemple

rsync -az /var/www/public_html/filename root@<remote-ip>:/var/www/public_html

Lire la suite

15voto

Kenny Evitt Points 1876

La réponse de Michael Place fonctionne parfaitement si, par rapport au répertoire racine de la source et de la cible, tous les répertoires du chemin du fichier existent déjà.

Mais que faire si vous voulez synchroniser un fichier avec ce chemin source :

/source-Root/a/b/file

vers un fichier avec le chemin cible suivant :

/target-Root/a/b/file

et les répertoires a y b n'existent pas ?

Vous devez exécuter une commande rsync comme la suivante :

rsync -r --include="/a/" --include="/a/b/" --include="/a/b/file" --exclude="*" [source] [target]

0voto

Samuel Points 303

À ce jour, deux des réponses ne sont pas tout à fait correctes, ils obtiendront plus d'un fichier, et l'autre n'est pas aussi simple qu'elle pourrait l'être, voici une réponse plus simple IMO.

La suivante obtient exactement un fichier, mais vous devez créer le répertoire de destination avec mkdir. C'est probablement l'option la plus rapide :

mkdir -p ./local/path/to/file
rsync user@remote:/remote/path/to/file/ -zarv --include "filename" --exclude "*" ./local/path/to/file/

S'il n'y a qu'une seule instance de fichier dans /remote/path, rsync peut créer des répertoires pour vous si vous procédez comme suit. Cela prendra probablement un peu plus de temps parce qu'il faut chercher dans plus de répertoires. De plus, il créera des répertoires vides pour les répertoires de /remote/path qui ne sont pas dans ./local.

cd ./local
rsync user@remote:/remote/path -zarv --include "*/" --include "filename" --exclude "*" .

Gardez à l'esprit que l'ordre de --include et --exclude est important.

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X