OSX SSH rsync - อัพเดทไดเรกทอรีระยะไกลให้ทันสมัย


11

ฉันมาจากพื้นหลัง Windows ส่วนใหญ่ย้ายมาที่ Mac ฉันใช้ WinSCP แล้วและชอบสิ่งที่เรียกว่า"Keep Remote Directory ให้ทันสมัย"

นี่คือคำถาม: มีลูกค้า SCP เทียบเท่าสำหรับ OSX ที่จะตรวจสอบไดเรกทอรีสำหรับการเปลี่ยนแปลงและอัปโหลดเมื่อตรวจพบหรือไม่ ฉันไม่สนใจว่าจะเป็นไคลเอนต์ GUI หรือผ่านทางบรรทัดคำสั่ง (rsync, ssh ฯลฯ )

คำตอบ:


0

ทางออกที่ดีที่สุดของคุณน่าจะใช้การทำงานของโฟลเดอร์และปรับสคริปต์แจ้งเตือนรายการใหม่ตามความต้องการของคุณโดยเรียกใช้โปรแกรมอรรถประโยชน์บรรทัดคำสั่งที่คุณต้องการ


12
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

ตัวเลือก Rsync:

  • -a - ย่อมาจาก "เก็บถาวร" และซิงค์ซ้ำและรักษาลิงก์สัญลักษณ์ไฟล์พิเศษและอุปกรณ์เวลาในการแก้ไขกลุ่มเจ้าของและสิทธิ์
  • -z - การบีบอัด
  • -P - รวมธง - ความคืบหน้าและ - บางส่วน ครั้งแรกของเหล่านี้ให้แถบความคืบหน้าสำหรับการถ่ายโอนและที่สองช่วยให้คุณสามารถดำเนินการถ่ายโอนขัดจังหวะ
  • --exclude - แยกไฟล์ตามรูปแบบ

คุณมีฉันจริงๆสับสนในขณะที่เพราะsyncเป็นระบบสาธารณูปโภค (อย่างน้อยในทุกระวัง * ผมเคยเห็น; ไม่แน่ใจเกี่ยวกับ OSX แต่ไม่เห็น reaosn ทำไมมันจะไม่ได้อยู่ที่นั่น) คุณอาจต้องการให้ชื่ออื่นถูกตัด นอกจากนี้สิ่งนี้ไม่ได้ผ่าน SSH ซึ่ง OP ต้องการ เพียงส่งผ่าน-e sshไปยัง rsync ควรแก้ไขปัญหานั้น
CVn

@ MichaelKjörling: +1: คงที่ขอขอบคุณสำหรับการแจ้งเตือน!
แดเนียล

ฉันไม่เข้าใจข้อยกเว้นของคุณคุณสามารถอธิบายสิ่งเหล่านี้ได้หรือไม่
peedee

1

คุณสามารถใช้ launchd แทนการกระทำของโฟลเดอร์ (เพื่อรับโค้ดตัวอย่างเพียงแค่ google สำหรับ: watchd folder watcher)

จากนั้นคุณอาจรวมคุณ launchd โฟลเดอร์รายการเฝ้าดูกับสคริปต์ SCP คล้ายกับคนนี้

หรือใช้ rsync ผ่าน ssh ดังนี้:

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

สำหรับโซลูชันซอฟต์แวร์ข้ามแพลตฟอร์มพาณิชย์ดูGoodSync


0

ตรวจสอบการส่งโดย Panic จากหนึ่งในบล็อกโพสต์ของพวกเขาแสดงความคิดเห็นกล่าวว่า:

หนึ่งในคุณสมบัติที่ฉันโปรดปรานที่บางคนอาจไม่รู้เมื่อคุณเปิดเอกสารในแอปพลิเคชันบางอย่างใน Transmit (สมมติว่าไฟล์. html เป็น BBEdit) จากนั้นแก้ไขเอกสารและบันทึก ส่งการอัปโหลดโดยอัตโนมัติกลับไปที่เซิร์ฟเวอร์ไปยังไฟล์เดียวกันไม่มีคำถามถาม มันทำงานได้อย่างมหัศจรรย์เมื่อสร้างเว็บไซต์และแก้ไข CSS สะดวกในการแก้ไขภาพขนาดเล็กผ่าน Photoshop คุณสามารถจัดการกับวิธีการส่งผ่านข้อตกลงกับนามสกุลไฟล์บางอย่างผ่าน Prefs


ฉันตรวจสอบการส่งสัญญาณแล้วโชคไม่ดีที่มันไม่รองรับ SCP - การเชื่อมต่อ SFTP เท่านั้น นอกจากนี้การส่งปฏิเสธที่จะเปิดไฟล์กุญแจส่วนตัวของฉัน
pygorex1

คุณลักษณะนี้แตกต่างกัน หมายความว่าคุณสามารถแก้ไขไฟล์จากเซิร์ฟเวอร์ระยะไกลได้โดยตรงโดยใช้เครื่องมือแก้ไขที่คุณเลือก โปรแกรม FTP อื่น ๆ ก็รองรับสิ่งนี้เช่นกัน
Daniel Beck

0

ฉันเจอสคริปต์ทับทิมที่ทำในสิ่งที่คุณต้องการ แต่มันจะใช้เวลาปรับตัวเล็กน้อย

คำอธิบาย:
rsync เมื่อใดก็ตามที่ไดเรกทอรีสคริปต์มีการเปลี่ยนแปลงโดยใช้ OS X FSEvents API https://gist.github.com/149491


0

ฉันมีปัญหาแบบเดียวกันและเป็นไปได้ที่จะใช้สิ่งเหล่านี้ร่วมกัน: rsync, SSH Passwordless Login, Watchdog (ยูทิลิตี้ Python sync) และ Terminal Notifier (ยูทิลิตี้แจ้งเตือน OS X ทำด้วย Ruby ไม่จำเป็น แต่ช่วยให้รู้ เมื่อการซิงค์เสร็จสิ้น)

  1. ฉันสร้างกุญแจเพื่อล็อกอินแบบไม่ใช้รหัสผ่านโดยใช้บทช่วยสอนนี้จาก Dreamhost wiki: http://cl.ly/MIw5

    1.1 เมื่อเสร็จแล้วให้ทดสอบว่าทุกอย่างเรียบร้อยหรือไม่ถ้าคุณไม่สามารถลงชื่อเข้าใช้ด้วยรหัสผ่านไม่ได้คุณอาจต้องลองติดตั้ง afp Dreamhost (ที่ที่เว็บไซต์ของฉันอยู่) ไม่อนุญาตให้ติดตั้ง afp แต่อนุญาตการล็อกอินแบบไม่ใช้รหัสผ่าน ในเทอร์มินัลพิมพ์:

    ssh username@host.com คุณควรเข้าสู่ระบบโดยไม่ต้องใช้รหัสผ่าน: P

  2. ฉันติดตั้ง Terminal Notifier จากหน้า Github: http://cl.ly/MJ5x

    2.1 ฉันใช้คำสั่ง Gem installer ในเทอร์มินัลพิมพ์:

    gem install terminal-notifier

    2.3 ทดสอบว่าการแจ้งเตือนใช้งานได้หรือไม่ใน Terminal ให้พิมพ์:

    terminal-notifier -message "Starting sync"

  3. สร้างสคริปต์ sh เพื่อทดสอบการแจ้งเตือน rsync + บันทึกทุกที่ที่คุณต้องการด้วยชื่อที่คุณชอบ ในตัวอย่างนี้ฉันจะเรียกมันว่า~ / Scripts / sync.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 อย่าลืมให้สิทธิ์การดำเนินการกับสคริปต์นี้ sh ในเทอร์มินัลพิมพ์:

    sudo chmod 777 ~/Scripts/sync.sh 3.2 เรียกใช้สคริปต์และตรวจสอบว่าข้อความแสดงขึ้นอย่างถูกต้องและ rsync ซิงค์โฟลเดอร์ในระบบของคุณกับโฟลเดอร์ระยะไกลจริงหรือไม่

  4. ในที่สุดฉันดาวน์โหลดและติดตั้ง Watchdog จากหน้า Github: http://cl.ly/MJfb

    4.1 ก่อนอื่นฉันติดตั้งการพึ่งพา libyaml โดยใช้ Brew (มีความช่วยเหลือมากมายในการติดตั้ง Brew - เหมือน "ความถนัด" สำหรับ OS X) ในเทอร์มินัลพิมพ์:

    brew install libyaml

    4.2 จากนั้นฉันใช้คำสั่ง "easy_install" ไปที่โฟลเดอร์ Watchdog และพิมพ์ใน Terminal:

    easy_install watchdog

  5. ตอนนี้ทุกอย่างถูกติดตั้งแล้ว! ไปยังโฟลเดอร์ที่คุณต้องการที่จะได้รับการซิงค์ , เปลี่ยนรหัสนี้เพื่อความต้องการของคุณและพิมพ์ในเทอร์มิ:

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

    มันจะต้องมีตรงวิธีนี้กับทับและแบ่งสายดังนั้นคุณจะต้องคัดลอกบรรทัดเหล่านี้ไปแก้ไขข้อความเปลี่ยนสคริปต์ที่วางใน terminal และกดผลตอบแทน

    ฉันพยายามโดยไม่มีตัวแบ่งบรรทัดและมันไม่ทำงาน!

    ใน Mac ของฉันฉันมักจะได้รับข้อผิดพลาด แต่ดูเหมือนจะไม่มีผลอะไร:

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

    ตอนนี้ทำการเปลี่ยนแปลงบางอย่างในไฟล์ภายในโฟลเดอร์และดูความมหัศจรรย์!

โดยการใช้ไซต์ของเรา หมายความว่าคุณได้อ่านและทำความเข้าใจนโยบายคุกกี้และนโยบายความเป็นส่วนตัวของเราแล้ว
Licensed under cc by-sa 3.0 with attribution required.