केवल FTP या lftp का उपयोग करके किसी FTP सर्वर पर एक निर्देशिका कैसे अपलोड करें?


19

मैं एक स्थानीय निर्देशिका को दूरस्थ सर्वर (किसी भी मौजूदा फ़ाइलों को हटाकर) की प्रतिलिपि बनाने के लिए एक लिनक्स शेल स्क्रिप्ट लिख रहा हूं।

स्थानीय सर्वर: ftp और lftpआदेश उपलब्ध हैं, कोई ncftp या कोई चित्रमय उपकरण नहीं।

रिमोट सर्वर: केवल एफ़टीपी के माध्यम से पहुँचा जा सकता है। न rsync और न ही एसएसएच और न ही एफएक्सपी।

मैं एक स्थानीय और दूरस्थ फ़ाइलों को सूचीबद्ध करने के बारे में सोच रहा हूं ताकि एक लैफ्टप स्क्रिप्ट तैयार की जा सके और फिर उसे चलाया जा सके। क्या कोई बेहतर तरीका है?

नोट: केवल संशोधित फ़ाइलों को अपलोड करना एक प्लस होगा, लेकिन इसकी आवश्यकता नहीं है।


ncftp पूरी तरह से सवाल है? सबसे आसान होगा imho (और मुझे पता है कि मैं इसे वैसे ही करूंगा जैसे मैं इसका इस्तेमाल करता हूं)
Sirex

Sirex: मैं इसे उन टूल्स के साथ करूंगा जो RedHat पर डिफ़ॉल्ट रूप से आते हैं। यदि Lftp अनुपयोगी साबित होता है, तो मैं उपयोगकर्ताओं के लिए ncftp स्थापित करने के लिए एक आवश्यकता जोड़ूंगा।
निकोलस राउल

के लिए वाक्य रचना wput(एक wget-like ftp-uploader):wput dir/ ftp://user:pass@host/dir
kenorb

जवाबों:


39

Lftp को एक कदम में ऐसा करने में सक्षम होना चाहिए, विशेष रूप से lftp mirror:

संपादित करें: lftp कमांड सिंटैक्स भ्रामक है, मैंने जो मूल आमंत्रण पोस्ट किया है वह काम नहीं करता है। इसे इस तरह आज़माएं:

lftp -e "mirror -R {local dir} {रिमोट dir}" -u {username}, {password} {स्थानीय}

तर्क के चारों ओर उद्धरण -eस्विच पर ध्यान दें


1
+1 करने के लिए कि lftp का मिरर मोड काम करता है, भले ही FXP उपलब्ध न हो (मैं ट्यूटोरियल पढ़ने के बाद विपरीत के प्रति आश्वस्त था। papamike.ca/pub/lftp.html जो कहता है कि "दोनों सर्वर को इस ऑपरेशन को सफल होने के लिए इस प्रोटोकॉल का समर्थन करना चाहिए।" ")। हालाँकि, यह विशिष्ट आदेश मेरे Ubuntu सर्वर पर विफल रहता है: lftp: दर्पण: नाम या सेवा ज्ञात नहीं है, अज्ञात कमांड `-R '।
निकोलस राउल

मैंने अपने जवाब को lftp के बेहतर आह्वान के साथ पुन: प्राप्त किया, उम्मीद है कि इससे मदद मिलेगी।
फिल होलेनबैक

मैं अंत में यह काम करने के लिए gt! ऐसा लगता है कि आपको काम करने के लिए दूरस्थ और स्थानीय स्विच करना होगा। कृपया अपडेट करें और मैं इस उत्तर को स्वीकार करूंगा। यहाँ एक कमांड लाइन है जो काम करती है: lftp -e "mirror -R / tmp / mylocalfiles / var / www" -u Remoteuser, remotepassword remoteserver
निकोलस राउल

मुझे लगता है कि मैंने lftp डॉक्स में देखा है कि -R का उपयोग करते समय आपको लोकल और रिमोट डायर को स्विच करना पड़ता है लेकिन मुझे भूल जाना चाहिए। मेरे उत्तर को अपडेट किया।
फिल होलेनबैक

यह कैसे विफल होता है? क्या आपने अधिक वर्बोज़ आउटपुट के लिए 'lftp -vvv' चलाने की कोशिश की है ताकि यह निर्धारित किया जा सके कि यह क्या करने की कोशिश कर रहा है?
फिल होलेनबैक

1

Lftp के दर्पण मोड का उपयोग करने के फिल के विचार के आधार पर, यह कमांड चाल करता है:

lftp -c 'open -e "mirror /tmp/thedir ftp://nico:mypass@remotehost/~/destination/" ftp://nico:mypass@localhost'

एक कमी यह है कि एफ़टीपी सर्वर को चलाने के लिए स्थानीय सर्वर की आवश्यकता होती है।


1
cd {local_dir}
lftp {server}
cd {remote_dir}
mput {local_dir}/*

यह मेरे लिए काम कर रहा था, कई अन्य प्रयास विफल हो रहे थे। Lftp में एक बार, अधिक जानकारी उपलब्ध है:

help mput

2
mirror -Rयहां उपयोग करना बेहतर होगा ।
गुतुह

@ सही आप सही हो। सबसे अच्छा जवाब ^
आस्टिन

0

अंत में जवाब मिला !!! शेल स्क्रिप्ट ftpmirror.sh बनाएँ

#!/bin/bash 
path = /local-dir-path
lftp -e "mirror -R $path /$path" -u username,password ftp-server-ip
  • पथ = स्थानीय निर्देशिका जिसे हम ftp सर्वर में कॉपी करना चाहते हैं
  • उपयोगकर्ता नाम = ftp सर्वर उपयोगकर्ता नाम
  • पासवर्ड = एफ़टीपी सर्वर पासवर्ड
  • ftp-server-ip = ftp सर्वर का आईपी एड्रेस

यदि lftp संकुल को संस्थापित नहीं किया जाता है तो इसे yum का उपयोग करके स्थापित किया जाता है।

हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.