2009-02-02 18 views
12

फ़ाइल foo.txt पर दूरस्थ मशीन पर मौजूद है को नष्ट करने के:rsync का उपयोग करते हुए एक एकल फाइल

/home/user/foo.txt यह स्थानीय मशीन पर मौजूद नहीं है।

मैं rsync का उपयोग कर foo.txt को हटाना चाहता हूं।

मुझे नहीं पता (और इस प्रश्न के प्रयोजनों के लिए मान लें कि मुझे पता नहीं है) स्थानीय या दूरस्थ मशीनों पर/अन्य/उपयोगकर्ता/अन्य उपयोगकर्ता कौन सी फाइलें हैं, इसलिए मैं पूरी निर्देशिका को सिंक नहीं कर सकता ।

rsync कमांड मैं दूरस्थ मशीन पर foo.txt को हटाने के लिए उपयोग कर सकता हूं?

उत्तर

26

इस प्रयास करें:

rsync -rv --delete --include=foo.txt '--exclude=*' /home/user/ [email protected]:/home/user/ 

हालांकि ऐसा लगता है जैसे कि यह ssh का उपयोग करने के आसान होगा (अत्यधिक --dry-run यह परीक्षण करने के लिए पहले से चल रहा है की सलाह देते हैं) ...

ssh [email protected] "rm /home/user/foo.txt" 
+0

इस उद्देश्य के लिए एसएसएच का उपयोग नहीं कर सकता। (यह एक नीति बात है, तकनीकी बात नहीं।)) – dirtside

+0

इसके अलावा: rsync: link_stat "/home/user/foo.txt" विफल: ऐसी कोई फ़ाइल या निर्देशिका (2) – dirtside

+0

स्पष्ट रूप से फ़ाइल नहीं है स्थानीय रूप से मौजूद है, हम इसे स्थानांतरित करने के लिए स्रोत फ़ाइल के रूप में निर्दिष्ट नहीं कर सकते हैं। फ़ाइलों को हटाए जाने का एकमात्र तरीका यह है कि यदि आप पूरी निर्देशिका सिंक करते हैं; किसी भी गायब रिमोट फाइलों को हटा दिया जाता है। मुझे लगता है। – dirtside

6

कि एक सा तुच्छ है , लेकिन अगर, मेरे जैसे, आप इस पृष्ठ पर आए हैं, rsync का उपयोग कर रिमोट सर्वर से निर्देशिका की सामग्री को हटाने का तरीका ढूंढ रहे हैं, इस तरह मैंने इसे किया:

  1. एक खाली नकली फ़ोल्डर बनाएं:

    mkdir नकली

  2. सिंक के साथ यह

    rsync -arv --delete --dry रन ~/नकली/remote_server: ~/dir_to_clean/

  3. वास्तव में चीज करने के लिए ऊपर की रेखा से --dry-run हटाएं।

+0

+1, लेकिन subdirs में recurs करने के लिए add -r जोड़ें। हमारी कोलो सुविधा बैकअप सर्वर में केवल scp, sftp, और rsync की अनुमति है। कुछ चंकी अप्रचलित साइटों को हटाने के लिए, rsync ने चाल की थी (sftp दिन ले लिया होगा ;-)) – virtualeyes

+1

बस रिकर्सिव-डिलीट-सबकुछ कमांड को समेटने के लिए: "rsync -rv --delete --force/खाली/दूरस्थ: खाली -मे/" – virtualeyes

+1

यदि आप" -a "," -r "का उपयोग करते हैं तो इसका अर्थ है। "-a" = "-rlptgoD" <यह भी देखें: http://rsync.samba.org/ftp/rsync/rsync.html> – Swivel

संबंधित मुद्दे