Actuellement, je ne RSync-ing Directories
que comme:
* * * * * rsync -avz /var/www/public_html/images root@<remote-ip>:/var/www/public_html
Alors, comment puis-je rsync
un seul fichier comme /var/www/public_html/.htaccess
,?
Réponses:
Vous le faites de la même manière que vous le feriez 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/
Syntaxe de base
rsync options source destination
Exemple
rsync -az /var/www/public_html/filename root@<remote-ip>:/var/www/public_html
La réponse de Michael Place fonctionne très bien si, par rapport au répertoire racine de la source et de la cible, tous les répertoires dans le chemin du fichier existent déjà.
Mais que faire si vous souhaitez synchroniser un fichier avec ce chemin source:
/ source-root / a / b / fichier
vers un fichier avec le chemin cible suivant:
/ racine-cible / a / b / fichier
et les répertoires a et b n'existent pas?
Vous devez exécuter une commande rsync comme celle-ci:
rsync -r --include="/a/" --include="/a/b/" --include="/a/b/file" --exclude="*" [source] [target]
À ce jour, deux des réponses ne sont pas tout à fait exactes, ils obtiendront plus d'un fichier, et l'autre n'est pas aussi simple que cela pourrait être, voici une réponse plus simple IMO.
Ce qui suit obtient exactement un fichier, mais vous devez créer le répertoire dest 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 car il recherche plus de répertoires. De plus, cela créera des répertoires vides pour les répertoires dans / 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.