दूरस्थ निर्देशिका पर फाइलें और डिलीट फाइलें [बंद]


18

मैं एक यूनिक्स noob हूँ, इसलिए कृपया धैर्य रखें :-)

मेरे पास एक स्क्रिप्ट है जो फाइलों के एक गुच्छा को दूसरे सर्वर पर भेजती है।

मान लीजिए कि वे z1.foo, z2.foo आदि हैं, मैं जो करना चाहता हूं वह गंतव्य सर्वर में 5 दिनों से अधिक पुरानी फ़ाइलों को स्कैन करना और हटाना है।

मैं गंतव्य से फ़ाइलों को सुरक्षित रूप से कैसे हटाऊं?

धन्यवाद।


"गंतव्य पर फ़ाइलें अधिलेखित करें"? यदि आप उन फ़ाइलों को स्कैन करते हैं जो पहले से ही दूरस्थ dir पर मौजूद हैं, तो वे स्वचालित रूप से अधिलेखित हो जाएंगे
Aki

इसका अच्छा विचार, स्थानीय रूप से शेल स्क्रिप्ट वाली फ़ाइलों को हटाने के लिए है। लेकिन शेल स्क्रिप्ट है जो एक निश्चित फ़ोल्डर के तहत फ़ाइलों को हटाने के लिए दैनिक आधार पर चलती है, जहाँ आप find /path/to/files* -mtime +5 -exec rm {} \;
फाइलें रखते हैं ।.कॉम

जवाबों:


21

गैर-संवादात्मक रूप से फ़ाइलें निकालने के लिए:

ssh hostname "rm -f z100.foo z200.foo"

1
होस्टनाम क्या है? क्या यह है servername@ipaddress:path/to/dir/?
हेट्रिकएनजेड

1
होस्टनाम सिर्फ user:password@ipaddressया तो है user:password@dnsnameया आप पासवर्ड की जरूरत नहीं होने पर उसे छोड़ सकते हैं। मैंने अभी इसके साथ कोशिश की है root@somednsnameऔर यह ठीक काम करता है। path/to/dirयह सुनिश्चित करने के लिए कि यह सही है, rm कमांड में मैंने जो हिस्सा डाला, वह एक निरपेक्ष मार्ग है।
AsGoodAsItGets

6

आप --deleteध्वज का उपयोग करके एक ही कमांड में दोनों कार्यों को पूरा कर सकते हैं rsync

> ls -1 localdir/
a.foo
b.foo

> ssh remote-host "ls -1 remotedir/"
c.foo

> rsync -a --delete localdir/ remote-host:remotedir/

> ssh remote-host "ls -1 remotedir/"
a.foo
b.foo

--deleteविकल्प गंतव्य निर्देशिका है कि स्रोत पर मौजूद नहीं हैं से फाइल को हटा। फ़ाइलों को हटाए जाने और बहिष्कृत फ़ाइलों को कैसे संभालना है, इसके बारे में कुछ विकल्प हैं।

> man rysnc
...
--delete                delete extraneous files from dest dirs
--delete-before         receiver deletes before transfer (default)
--delete-during         receiver deletes during xfer, not before
--delete-after          receiver deletes after transfer, not before
--delete-excluded       also delete excluded files from dest dirs

मैन पेज में यह चेतावनी शामिल है:

अगर गलत तरीके से इस्तेमाल किया जाए तो यह विकल्प खतरनाक हो सकता है! यह देखने के लिए पहले --dry-run option( -n) का उपयोग करके कि क्या महत्वपूर्ण फ़ाइलें सूचीबद्ध नहीं हैं, यह सुनिश्चित करने के लिए फ़ाइलों को हटा दिया जाएगा चलाने के लिए एक बहुत अच्छा विचार है ।


2

यदि आप उपयोगकर्ता नाम और पोर्ट संख्या सेट करना चाहते हैं, तो आप निम्न कार्य कर सकते हैं:

ssh root@203.0.113.123 -p22 "rm -rf /home/amzad/test.php"
हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.