सवाल एफ़टीपी पर rsync का उपयोग कैसे करें


कोई यूनिक्स:

मेरे पास निम्न cmd लाइन है जो ठीक काम करती है।

rsync -avr -e ssh /home/dir user@example.com:/home/

लेकिन मुझे इसे दूरस्थ सर्वर पर rsync पर सेट अप करने की आवश्यकता है जिसमें केवल एक FTP सर्वर है। मैं उसे करके देखूं तो?

मैंने rsync मदद को देखा लेकिन जल्दी से खो गया (मैं अक्सर यह सामान नहीं करता)।


175
2018-06-12 09:51


मूल


यह पूछने के समान है कि आईआरसी पर HTTP का उपयोग कैसे करें, या एसएमटीपी पर एफ़टीपी का उपयोग कैसे करें ... - Juliano
हो सकता है कि आप ऐसा करने के इच्छुक अपने कुछ तर्कों को समझा सकें, फिर हम आपको व्यवहार्य समाधान के साथ आने में मदद कर सकते हैं। - James
अनिवार्य रूप से मैं एक साझा होस्टिंग सर्वर से बैकअप स्वचालित करने की कोशिश कर रहा था, और यह समझ में नहीं आया कि rsync कैसे काम करता है। मैं अब एक वीपीएस में चले गए हैं, और अब ftp की सीमा नहीं है - bumperbox
डुप्लिकेट आपका भगवान है: scie.nti.st/2013/4/13/... - user956584
अगर तैनाती है, आपके दिमाग में क्या है, और आप नोडजेएस को ध्यान में रखते हैं, चेक आउट करें dploy, आलसी और गिट के साथ अच्छी तरह से काम करता है - Frank Nocke


जवाब:


आप नहीं करते rsync आपके लिए ऐसा नहीं कर सकता है, यह स्वयं का प्रोटोकॉल है और एफ़टीपी पर काम नहीं करता है।

हालांकि, आप कोशिश करना चाहते हैं csync। आईआईआरसी यह HTTP पर rsync- जैसे व्यवहार प्रदान करता है। मैं इस पर टिप्पणी नहीं कर सकता कि यह एफ़टीपी पर काम करता है, आपको इसे आजमा देना होगा।


76
2018-06-12 10:00



उसे देख रहा हूँ csync वेब पेज, यह sftp का समर्थन करता है लेकिन सादे ftp के लिए समर्थन का कोई उल्लेख नहीं है। - Keith Thompson


rsync दूसरों के उल्लेख के कारणों के लिए आपके लिए काम नहीं करेगा। हालाँकि, lftp तथा ncftp दोनों में "दर्पण" मोड हैं जो शायद आपकी आवश्यकताओं को पूरा करेंगे।

मैं अपनी स्थानीय निर्देशिका से सामान को एक FTP या sftp वेब होस्ट में धक्का देने के लिए इसका उपयोग करता हूं:

lftp -c "set ftp:list-options -a;
open ftp://user:password@your.ftp.com; 
lcd ./web;
cd /web/public_html;
mirror --reverse --delete --use-cache --verbose --allow-chown  
--allow-suid --no-umask --parallel=2 --exclude-glob .svn"

156
2018-06-12 14:58



lftp बहुत अच्छा है। एक और मैं बस के बारे में पता चला है wput जिसमें अंतर्निहित बैंडविड्थ सीमित है। - karmakaze


जैसा लिखा है चित्रफलक, lftp एक अच्छा उपकरण है।

मेरा सुझाव है कि आप स्क्रिप्ट को पैरामीट्रिज़ करें, और इसका उपयोग करें

exclude-glob

विकल्प, जो आपके खोल के ग्लोब फीचर (*, .. ..) का उपयोग कर फ़ाइल नामों को शामिल करता है:

#!/bin/bash    
HOST="your.ftp.host.dom"
USER="username"
PASS="password"
FTPURL="ftp://$USER:$PASS@$HOST"
LCD="/path/of/your/local/dir"
RCD="/path/of/your/remote/dir"
#DELETE="--delete"
lftp -c "set ftp:list-options -a;
open '$FTPURL';
lcd $LCD;
cd $RCD;
mirror --reverse \
       $DELETE \
       --verbose \
       --exclude-glob a-dir-to-exclude/ \
       --exclude-glob a-file-to-exclude \
       --exclude-glob a-file-group-to-exclude* \
       --exclude-glob other-files-to-exclude"

चेतावनी: सुनिश्चित करें कि लक्ष्य निर्देशिका मौजूद है, अन्यथा सीडी कमांड विफल हो जाएगा, इसलिए ऑपरेशन फाइलों के पेड़ों को हटाने सहित  गलत निर्देशिका (रूट) पर होगा!

मैंने स्क्रिप्ट को अपडेट किया है ताकि --delete विकल्प defaut द्वारा अक्षम किया गया है, इसे असम्बद्ध करके सक्षम करें DELETE= command


118
2018-01-26 11:58



मुझे एक बड़ा गुच्छा मदद की। लेकिन मुझे "सेट ftp: list-options -a;" को हटाना पड़ा जहां गड़बड़ाना सामान है। - mat
क्या ऐसा कुछ ऐसा है जो एसएफटीपी (एफटीपीएस?) पर एक ही चीज़ करता है? - trusktr
मैं पहले यह करूँगा cd $RCD, ताकि गलत निर्देशिका से फ़ाइलों को गलती से हटाने से ए-स्क्रिप्ट-ए-ए-टाइपो को रोकने के लिए: set cmd:fail-exit yes। (ऐसा लगता है lftp यह नोटिस नहीं करता है कि जब तक आप अगली कमांड जारी नहीं करते हैं, तब तक यह वास्तव में बाहर निकलता है।) - और इससे पहले cd $LCD मैं यह करूँगा (स्थानीय खोल में, यानी, स्क्रिप के शीर्ष पर): set -eu। - KajMagnus
असल में, पहली बार जब मैं अपनी स्क्रिप्ट चलाता हूं, मैंने अभी तक दूरस्थ निर्देशिका नहीं बनाई है, इसलिए स्क्रिप्ट उस गैर-मौजूदा डीआईआर में सीडी में विफल रही। तब लिपि शुरू हुई mirror, और इस तरह --delete: गलत डीआईआर से डी फाइलें। (लेकिन मैंने उन्हें दोबारा कॉपी किया, इसलिए उस मामले में इससे कोई फर्क नहीं पड़ता। शायद यह किसी और के लिए मायने रखता है।) - KajMagnus
'Set -eu' और 'cd $ LCD' का उपयोग करने के बारे में @KajMagnus 'सलाह के साथ-साथ' सीडी $ एलसीडी 'से पहले' mkdir -p $ LCD 'जोड़ें - इस तरह आप सुनिश्चित कर सकते हैं कि निर्देशिका मौजूद है और आप' इसमें फिर से - Paul Gear


वास्तव में आप जो करने की कोशिश कर रहे हैं उसके आधार पर, एक और पूरी तरह से अलग दृष्टिकोण का उपयोग किया जा सकता है curlftps एक FTP फ़ोल्डर माउंट करने के लिए, और फिर शायद rsync दो "स्थानीय" फ़ोल्डर्स।

इंस्टॉलेशन आपके डिस्ट्रो के आधार पर अलग है इसलिए मैं उस पर सामान्यीकृत नहीं कर सकता, लेकिन आपको इंस्टॉल करने की आवश्यकता हैfuse तथा curlftpfs (असली डेबियन पहले से ही है fuse डिफ़ॉल्ट रूप से स्थापित करें), फिर:

  1. sudo apt-get install curlftpfs

  2. सुनिश्चित करें कि fuse मॉड्यूल लोड किया गया है (modprobe fuse)

  3. sudo curlftpfs ftp.yourserver.com /path/to/ftp/folder/ -o user=username:password,allow_other

ध्यान दें कि आखिरी कॉमा के बाद कोई जगह नहीं है (यह एक टाइपो नहीं है!)। यदि आप इससे संतुष्ट हैं या हर बार इसे नहीं बनाना चाहते हैं, तो आप इसे अपने fstab (आमतौर पर अंदर) में जोड़ सकते हैं /etc/fstab):

curlftpfs#user:password@ftp.yourserver.com /path/to/ftp/folder/ fuse auto,user,uid=1000,allow_other 0 0

उस स्थिति में, आपको यह सुनिश्चित करना होगा कि फ़्यूज़ मॉड्यूल पहले लोड हो।

हालांकि, दो चीजों की सलाह दी जानी चाहिए:

  • डेवलपर ने एक या दो साल पहले परियोजना को गिरा दिया, इसलिए मुझे नहीं पता कि समय के लिए उपयोग करने योग्य / स्थिर कैसे है।
  • अगर पासवर्ड में एक अजीब चरित्र होता है curlftpfs असफल हो सकता है (शायद आप कुछ कर सकते हैं .netrc)।

23
2017-12-11 12:39



एफ़टीपी फ्यूज और rsync प्रश्न के सबसे नज़दीक है लेकिन छोटी फ़ाइलों के एक छोटे से सेट पर स्पष्ट रूप से पागल है। - Steve-o
यह पागल क्यों होगा? डिफ़ॉल्ट रूप से rsync stat () s, यह सामग्री की तुलना नहीं करता है। यह एक FTP ग्राहक के साथ ls -l द्वारा किया जा सकता है। - ptman
मैंने वास्तव में यह कोशिश की (rsnapshot के माध्यम से) और यह काम नहीं किया, प्रत्येक फ़ाइल लौटा और त्रुटि, यह दिखा रहा है कि rsync एक लिंक नहीं बना सका। तो rsnapshot के साथ संयोजन में lftp का उपयोग करके चाल थी - Konstantin Pereiaslov
14.04 एलटीएस पर निर्दोष; एक अतिरिक्त युक्ति: जब आप अपनी एफ़टीपी साइट को अनमाउंट करने के लिए तैयार हों तो बस उपयोग करें umount DIR कहा पे DIR आपका था /path/to/ftp/folder ऊपर। - Joe
2017, और यह अभी भी काम करता है! एक एफ़टीपी साइट enmasse से फ़ाइलों की प्रतिलिपि बनाने के लिए ईमानदारी से सबसे आसान तरीका। स्थानीय रूप से माउंट करें, फिर rsync जैसे कि यह स्थानीय थे - td512


वहाँ है weex...

वेक्स एक उपयोगिता है जिसे डिजाइन किया गया है   दूरस्थ रूप से कार्य स्वचालित करें   एक वेब पेज या अन्य एफ़टीपी बनाए रखना   पुरालेख। यह एक सेट सिंक्रनाइज़ करेगा   एक दूरस्थ सर्वर के लिए स्थानीय फाइलें   प्रदर्शन और रिमोट हटाना प्रदर्शन   जैसी ज़रूरत।


15
2017-08-17 14:38



आकर्षण की तरह काम करता है! आप इसे इस तरह से चला रहे हैं: $ weex yourFTPconfigName मैनुअल यहाँ है linuxcertif.com/man/1/weex - sobi3ch


rsync ftp पर काम नहीं करता है। रिमोट साइड पर इसे या तो rsync डिमन या एक खोल की आवश्यकता होती है जिसे वह rsync से कॉल कर सकता है। एफटीपी आम तौर पर आपको कुछ कमांड कॉल करने की अनुमति देता है और rsync उनमें से एक नहीं है। "Lftp" जैसे ftp कार्यों को स्वचालित करने के लिए अन्य टूल हैं।


9
2018-06-12 10:03





यह एक अच्छा और नि: शुल्क फिट जैसा लगता है: https://savannah.gnu.org/projects/ftpsync/


8
2018-06-12 15:02



स्टीमिंग ढेर को देखते हुए नहींं-स्पर्श के साथ एक दस फुट ध्रुव SourceForge हाल ही में बन गया है, शायद आपको लिंक को अद्यतन करना चाहिए परियोजना का वेबपेज। - HopelessN00b


ऐसा लगता है कि आप क्या करने की कोशिश कर रहे हैं, आप भी wget का उपयोग कर सकते हैं।

wget -m एफ़टीपी: // उपयोगकर्ता नाम: password@domain.com


6
2018-02-25 18:12



यह केवल साइट का दर्पण बना देगा। आप अपने संशोधनों को अपलोड करने के लिए इसका उपयोग नहीं कर सकते हैं। - David V.


आप ftp माउंट करने के लिए curlftpfs का उपयोग कर सकते हैं और बाद में rsync का उपयोग कर सकते हैं http://linux.die.net/man/1/curlftpfs


5
2017-12-09 21:47



सर्वरफॉल्ट में आपका स्वागत है! यह एक अच्छी शुरुआत हो सकती है, लेकिन कुछ और तकनीकी विवरण यह है कि यह एक बेहतर दृष्टिकोण क्यों है, और संभवतः यह कैसे करना है, इस पर एक नकली, उचित हो सकता है। - Scott Pack


मैं जीवीएफएस / एफ़टीपी का उपयोग कर रहा हूँ। मैं अपने रिमोट एफ़टीपी सर्वर gigolo के साथ माउंट। चूंकि उन्हें स्थानीय निर्देशिकाओं के रूप में देखा जाता है, स्थानीय फाइलों पर काम करने वाले लगभग कुछ भी काम करता है। rsync को फ़ाइल हैंश को दूरस्थ रूप से फ़ाइलों की तुलना करने के लिए दूरस्थ रूप से गणना करने के लिए डिज़ाइन किया गया है, लेकिन वर्चुअल फ़ाइलों के साथ ऐसा करने से फ़ाइलों को वैसे भी स्थानांतरित किया जाता है। यूनिसन और फ्रीफाइलसिंक सामान्य रूप से अच्छी तरह से काम करते हैं, लेकिन जब आप अपलोड की गई फ़ाइल का नाम बदलना चाहते हैं, तो कोई समस्या डाउनलोड नहीं हो रही है। यह gvfs 1.6.1 के साथ एक समस्या हो सकती है।


4
2017-11-29 17:55





जोनास एस का समाधान परिस्थिति के आधार पर उपयोगी हो सकता है, उदाहरण के लिए यदि आपके पास उच्च डाउनलोड गति और धीमी अपलोड है, तो सर्वर पर फ़ाइलों की जांच करना अनावश्यक रूप से फ़ाइलों को अपलोड करने से अपेक्षाकृत तेज़ हो सकता है।

आप शायद CurlFTPFS का उपयोग करना चाहते हैं, हालांकि: http://packages.ubuntu.com/search?suite=default&section=all&arch=any&searchon=names&keywords=curlftpfs

हालांकि, आम तौर पर, rsync के बजाय एक नियमित एफ़टीपी क्लाइंट का उपयोग करना बेहतर होता है।


3
2017-11-11 10:06