OSX SSH rsync - दूरस्थ निर्देशिका को अद्यतन रखें


10

मैं मुख्य रूप से एक विंडोज पृष्ठभूमि से आता हूं, मैक पर पलायन कर रहा हूं। मैंने WinSCP का उपयोग किया है और "Keep Remote Directory Up to Date" नामक एक फीचर को पसंद किया है ।

यहाँ सवाल है: क्या OSX के लिए एक समान एससीपी क्लाइंट है जो पता लगने पर परिवर्तन और अपलोड के लिए एक निर्देशिका की निगरानी करेगा? मुझे परवाह नहीं है अगर यह एक GUI क्लाइंट है या कमांड-लाइन (rsync, ssh, आदि) के माध्यम से है।

जवाबों:


0

आपकी सबसे अच्छी शर्त संभवतया फोल्डर क्रियाओं का उपयोग करना और अपनी आवश्यकताओं के लिए नए आइटम अलर्ट स्क्रिप्ट को अपनाना , अपनी पसंद की कमांड लाइन उपयोगिता के लिए कॉल जारी करना है।


9
alias run_rsync='rsync -azP --exclude ".*/" --exclude ".*" --exclude "tmp/" /source_folder username@host:/destination_folder'
run_rsync; fswatch -o . | while read f; do run_rsync; done

दूसरी पंक्ति run_rsyncबिना शर्त के एक बार चलती है और फिर - वर्तमान निर्देशिका में प्रत्येक परिवर्तन पर (या इसके बजाय सटीक पथ निर्दिष्ट करें .)

आप की आवश्यकता होगी fswatch- यहाँ कैसे काढ़ा के माध्यम से स्थापित करने के लिए है :

brew install fswatch

रुपी विकल्प:

  • -a - "संग्रह" के लिए खड़ा है और पुनरावर्ती रूप से सिंक करता है और प्रतीकात्मक लिंक, विशेष और डिवाइस फ़ाइलों, संशोधन समय, समूह, स्वामी और अनुमतियों को संरक्षित करता है।
  • -ज़ - संपीड़न
  • -पी - झंडे को जोड़ती है --प्रगति और --पक्षीय। इनमें से पहला आपको स्थानांतरण के लिए एक प्रगति बार देता है और दूसरा आपको बाधित स्थानान्तरण को फिर से शुरू करने की अनुमति देता है
  • --exclude - पैटर्न द्वारा फ़ाइलों को बाहर करता है

आप वास्तव में मुझे थोड़ी देर के लिए भ्रमित कर रहे थे क्योंकि syncएक सिस्टम उपयोगिता है (कम से कम हर * निक्स पर मैंने देखा है; ओएसएक्स के बारे में निश्चित नहीं है, लेकिन कोई पुनःविचार देखें कि यह क्यों नहीं होगा)। आप अपने स्निप को एक अलग नाम देना चाह सकते हैं। इसके अलावा, यह एसएसएच से अधिक नहीं है, जिसे ओपी चाहता था; बस -e sshrsync के लिए गुजर रहा है कि ठीक करना चाहिए।
एक CVn

@ MichaelKjörling: +1: निश्चित किया गया, सूचना के लिए धन्यवाद!
डैनियल

मैं आपके निष्कर्षों को नहीं समझता, क्या आप उन्हें समझा सकते हैं?
पीडी

1

आप फ़ोल्डर क्रियाओं के बजाय लॉन्च का उपयोग कर सकते हैं (कुछ नमूना कोड प्राप्त करने के लिए: Google के लिए लॉन्च लॉन्चर फ़ोल्डर)।

फिर आप इसे एक समान स्कैप स्क्रिप्ट के साथ लॉन्च किए गए फ़ोल्डर वॉचर आइटम को जोड़ सकते हैं ।

या, जैसे ss पर rsync का उपयोग करें:

rsync -urltv --delete -e ssh /path/to/dir othermachine:/path/to/dir

एक वाणिज्यिक क्रॉस-प्लेटफ़ॉर्म सॉफ़्टवेयर समाधान के लिए GoodSync देखें ।


0

दहशत से संचारित जाँच करें । से अपने ब्लॉग पोस्ट में से एक , एक टिप्पणीकार ने कहा:

मेरी पसंदीदा विशेषताओं में से एक, जो कुछ लोगों को पता नहीं हो सकता है, जब आप एक निश्चित एप्लिकेशन में एक दस्तावेज़ को ट्रांसमिट में खोलते हैं (चलो एक। Html फ़ाइल BBEdit में कहते हैं) तो दस्तावेज़ को संपादित करें और इसे सहेजें; ट्रांसमिट स्वचालित रूप से उसी फ़ाइल में सर्वर पर वापस अपलोड करता है, कोई प्रश्न नहीं पूछा जाता है। वेबसाइट बनाने और CSS को एडिट करने पर यह अद्भुत काम करता है। फ़ोटोशॉप के माध्यम से छवियों में छोटे सुधार करने के लिए भी सुविधाजनक है। आप यह भी संभाल सकते हैं कि कैसे ट्रांसमिशन प्रीफ्स के माध्यम से कुछ फ़ाइल एक्सटेंशन के साथ काम करता है।


मैंने ट्रांसमिट में देखा है - दुर्भाग्य से यह एससीपी का समर्थन नहीं करता है - केवल एसएफटीपी कनेक्शन। इसके अलावा, Transmit ने मेरी निजी कुंजी फ़ाइलों को खोलने से इंकार कर दिया।
pygorex1

यह सुविधा कुछ अलग है। इसका मतलब सिर्फ इतना है कि आप अपनी पसंद के संपादक का उपयोग करके दूरस्थ सर्वर से फ़ाइलों को सीधे संपादित कर सकते हैं। अन्य एफ़टीपी कार्यक्रम भी इसका समर्थन करते हैं।
डैनियल बेक

0

मैं एक रूबी लिपि में आया हूं, जिसमें आपकी आवश्यकता है, लेकिन इसमें थोड़ा सा बदलाव होगा।

विवरण:
rsync जब भी OS X FSEvents API https://gist.github.com/144491 का उपयोग करके स्क्रिप्ट में परिवर्तन करता है


0

ठीक है, मुझे एक ही तरह की समस्या थी और इनका एक साथ उपयोग करना संभव है: rsync, SSH पासवर्डलेस लॉग इन, वॉचडॉग (एक पायथन सिंक यूटिलिटी) और टर्मिनल नोटिफ़ायर (रूबी के साथ बनाया गया एक OS X नोटिफिकेशन यूटिलिटी की जरूरत नहीं है, लेकिन यह जानने में मदद करता है। जब सिंक समाप्त हो गया है)।

  1. मैंने ड्रीमहस्ट विकी से इस ट्यूटोरियल का उपयोग करके पासवर्डलेस लॉगिन की कुंजी बनाई: http://cl.ly/MIw5

    1.1। जब आप समाप्त कर लें, यदि सब कुछ ठीक है तो परीक्षण करें ... यदि आप पासवर्ड रहित लॉगिन नहीं कर सकते हैं, तो शायद आपको एफएपी माउंट का प्रयास करना होगा। ड्रीमहोस्ट (जहां मेरी साइट है) एफपी माउंट की अनुमति नहीं देता है, लेकिन पासवर्डलेस लॉगिन की अनुमति देता है। टर्मिनल में, टाइप करें:

    ssh username@host.com आपको पासवर्ड पूछे बिना लॉगिन करना चाहिए: पी

  2. मैंने Github पृष्ठ से टर्मिनल नोटिफ़ायर स्थापित किया: http://cl.ly/MJ5x

    2.1। मैंने जेम इंस्टॉलर कमांड का इस्तेमाल किया। टर्मिनल में, टाइप करें:

    gem install terminal-notifier

    2.3। यदि अधिसूचना काम करती है तो परीक्षण करें। टर्मिनल में, टाइप करें:

    terminal-notifier -message "Starting sync"

  3. Rsync + सूचना का परीक्षण करने के लिए एक sh स्क्रिप्ट बनाएँ। आप इसे कहीं भी, जैसे चाहें नाम से सेव कर लें। इस उदाहरण में, मैं इसे ~ / लिपियों / सिंक कहूंगा। मैंने ".sh एक्सटेंशन" का उपयोग किया है, लेकिन मुझे इसकी आवश्यकता नहीं है।

    #!/bin/bash terminal-notifier -message "Starting sync" rsync -azP ~/Sites/folder/ user@host.com:site_folder/ terminal-notifier -message "Sync has finished"

    3.1। इस श स्क्रिप्ट को निष्पादन की अनुमति देना याद रखें। टर्मिनल में, टाइप करें:

    sudo chmod 777 ~/Scripts/sync.sh 3.2। स्क्रिप्ट चलाएँ और सत्यापित करें कि क्या संदेश सही तरीके से प्रदर्शित हुए हैं और rsync वास्तव में आपके स्थानीय फ़ोल्डर को दूरस्थ फ़ोल्डर के साथ सिंक करता है।

  4. अंत में, मैंने Github पृष्ठ से Watchdog डाउनलोड और स्थापित किया: http://cl.ly/MJfb

    4.1। सबसे पहले, मैंने ब्रू का उपयोग करके लिबायम निर्भरता स्थापित की (ब्रू को स्थापित करने में बहुत मदद की है - ओएस एक्स के लिए "एप्टीट्यूड" की तरह)। टर्मिनल में, टाइप करें:

    brew install libyaml

    4.2। फिर, मैंने "easy_install कमांड" का उपयोग किया। वॉचडॉग का फ़ोल्डर जाएं, और टर्मिनल में टाइप करें:

    easy_install watchdog

  5. अब, सब कुछ स्थापित है! उस फ़ोल्डर पर जाएं जिसे आप सिंक करना चाहते हैं , इस कोड को अपनी आवश्यकताओं में बदलें , और टर्मिनल में टाइप करें:

      watchmedo shell-command
          --patterns="*.php;*.txt;*.js;*.css" \
          --recursive \
          --command='~/Scripts/Sync.sh' \
          .
    

    यह हो गया है बिल्कुल स्लैश और लाइन टूट के साथ इस तरह से, है, तो आप, एक पाठ संपादक में ये पंक्तियां कॉपी टर्मिनल और प्रेस बदले में स्क्रिप्ट, पेस्ट बदलना होगा।

    मैंने बिना लाइन ब्रेक के कोशिश की, और यह काम नहीं करता है!

    मेरे मैक में, मुझे हमेशा एक त्रुटि मिलती है, लेकिन यह कुछ भी प्रभावित नहीं करता है:

    /Library/Python/2.7/site-packages/argh-0.22.0-py2.7.egg/argh/completion.py:84: UserWarning: Bash completion not available. Install argcomplete.

    अब, फ़ोल्डर के अंदर एक फ़ाइल में कुछ बदलाव किए, और जादू देखें!

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