वर्तमान में मैं केवल RSync-ing इस Directories
प्रकार है:
* * * * * rsync -avz /var/www/public_html/images root@<remote-ip>:/var/www/public_html
तो मैं कैसे rsync
एक एकल फ़ाइल पसंद करते हैं /var/www/public_html/.htaccess
,?
जवाबों:
आप इसे उसी तरह करते हैं जैसे आप एक निर्देशिका करते हैं, लेकिन आप स्रोत के रूप में फ़ाइलनाम के लिए पूर्ण पथ निर्दिष्ट करते हैं। आपके उदाहरण में:
rsync -avz --progress /var/www/public_html/.htaccess root@<remote-ip>:/var/www/public_html/
मूल वाक्य रचना
rsync options source destination
उदाहरण
rsync -az /var/www/public_html/filename root@<remote-ip>:/var/www/public_html
माइकल प्लेस का जवाब बहुत अच्छा काम करता है, यदि स्रोत और लक्ष्य दोनों के लिए रूट निर्देशिका के सापेक्ष, फ़ाइल के पथ में सभी निर्देशिका पहले से मौजूद हैं।
लेकिन क्या होगा अगर आप इस स्रोत पथ के साथ किसी फ़ाइल को सिंक करना चाहते हैं:
/ स्रोत-रूट / a / b / फ़ाइल
निम्नलिखित लक्ष्य पथ के साथ एक फ़ाइल के लिए:
/ लक्ष्य-रूट / a / b / फ़ाइल
और निर्देशिका ए और बी मौजूद नहीं है?
आपको निम्नलिखित की तरह एक rsync कमांड चलाने की आवश्यकता है:
rsync -r --include="/a/" --include="/a/b/" --include="/a/b/file" --exclude="*" [source] [target]
तिथि करने के लिए, दो उत्तर बिल्कुल सही नहीं हैं, वे एक से अधिक फ़ाइल प्राप्त करेंगे, और दूसरा उतना सरल नहीं है जितना कि यह हो सकता है, यहां एक सरल उत्तर IMO है।
निम्नलिखित को एक फ़ाइल मिलती है, लेकिन आपको mddir के साथ डिस्टेंस डायरेक्टरी बनानी होगी। यह शायद सबसे तेज़ विकल्प है:
mkdir -p ./local/path/to/file
rsync user@remote:/remote/path/to/file/ -zarv --include "filename" --exclude "*" ./local/path/to/file/
यदि फ़ाइल का केवल एक उदाहरण / दूरस्थ / पथ में है, तो rsync आपके लिए निर्देशिका बना सकता है यदि आप निम्न कार्य करते हैं। यह शायद थोड़ा और समय लेगा क्योंकि यह अधिक निर्देशिकाओं को खोजता है। साथ ही यह उन निर्देशिकाओं के लिए खाली निर्देशिका बनाएगा जो / दूरस्थ / पथ में नहीं हैं
cd ./local
rsync user@remote:/remote/path -zarv --include "*/" --include "filename" --exclude "*" .
ध्यान रखें कि --include और --exclude का क्रम मायने रखता है।