Android

วิธีการถ่ายโอนไฟล์ด้วย rsync ผ่าน ssh

มันไม่ง่ายเลย

มันไม่ง่ายเลย

สารบัญ:

Anonim

เมื่อพูดถึงการถ่ายโอนไฟล์ระหว่างระบบในเครือข่ายผู้ใช้ Linux และ Unix จะมีเครื่องมือมากมายในการกำจัด

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

มีเครื่องมือพิเศษสำหรับการถ่ายโอนไฟล์ผ่าน SSH เช่น scp และ sftp แต่ไม่มีเครื่องมือใดที่มีคุณสมบัติทั้งหมดที่ rsync มีให้ rsync สามารถใช้สำหรับการทำมิเรอร์ข้อมูล, การสำรองข้อมูลเพิ่มเติม, คัดลอกไฟล์ระหว่างระบบและอื่น ๆ

ในบทช่วยสอนนี้เราจะอธิบายวิธีการคัดลอกไฟล์ด้วย rsync ผ่าน SSH

ความต้องการ

  • ยูทิลิตี้ rsync จะต้องติดตั้งบนทั้งปลายทางและระบบต้นทาง หากไม่ได้ติดตั้งคุณสามารถติดตั้งได้โดยใช้ตัวจัดการแพคเกจการกระจายของคุณ:

    Ubuntu และ Debian:

    sudo apt install rsync

    CentOS และ Fedora:

    sudo yum install rsync

    การเข้าถึง SSH กับคอมพิวเตอร์ระยะไกล

    ผู้ใช้ที่รันคำสั่ง rsync และผู้ใช้ SSH ระยะไกลต้องมีสิทธิ์ที่เหมาะสมในการอ่านและเขียนไฟล์

การใช้ rsync เพื่อถ่ายโอนไฟล์ผ่าน SSH

ด้วย rsync คุณสามารถถ่ายโอนไฟล์และไดเรกทอรีผ่าน SSH จากและไปยังเซิร์ฟเวอร์ระยะไกล

ไวยากรณ์ทั่วไปสำหรับการถ่ายโอนไฟล์ด้วย rsync มีดังนี้:

Local to Remote: rsync… -e ssh… HOST:DEST Remote to Local: rsync… -e ssh HOST:SRC…

โดยที่ SRC เป็นไดเรกทอรีต้นทาง DEST เป็นไดเรกทอรีปลายทาง USER เป็นชื่อผู้ใช้ SSH ระยะไกลและ HOST เป็นโฮสต์ SSH ระยะไกลหรือที่อยู่ IP

rsync เวอร์ชันที่ใหม่กว่ามีการกำหนดค่าให้ใช้ SSH เป็นเชลล์ระยะไกลที่เป็นค่าเริ่มต้นดังนั้นคุณสามารถละเว้นตัวเลือก -e ssh

ตัวอย่างเช่นในการถ่ายโอนไฟล์เดียว /opt/file.zip จากระบบโลคัลไปยังไดเร็กทอรี /var/www/ บนระบบรีโมตด้วย IP 12.12.12.12 คุณต้องรัน:

rsync -a /opt/file.zip [email protected]:/var/www/

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

หากไฟล์มีอยู่บนเซิร์ฟเวอร์ระยะไกลมันจะถูกเขียนทับ หากคุณต้องการบันทึกไฟล์ภายใต้ชื่ออื่นให้ระบุชื่อใหม่:

rsync -a /opt/file.zip [email protected]:/var/www/file2.zip

ในการถ่ายโอนข้อมูลจากรีโมตไปยังเครื่องโลคัลใช้ตำแหน่งรีโมตเป็นต้นทางและตำแหน่งโลคัลเป็นปลายทาง:

rsync -a [email protected]:/var/www/file.zip /opt/

การถ่ายโอนไดเรกทอรีด้วย rsync ผ่าน SSH เหมือนกับการถ่ายโอนไฟล์

สิ่งสำคัญคือต้องทราบว่า rsync ให้การรักษาที่แตกต่างกับไดเรกทอรีต้นทางด้วยการต่อท้ายสแลช / เมื่อไดเรกทอรีต้นทางมีเครื่องหมายทับต่อท้าย rsync จะคัดลอกเฉพาะเนื้อหาของไดเรกทอรีต้นทางไปยังไดเรกทอรีปลายทาง เมื่อตัดเครื่องหมายสแลชต่อท้ายไดเรกทอรีต้นทางจะถูกคัดลอกภายในไดเรกทอรีปลายทาง

ตัวอย่างเช่นการโอนโลคัล /opt/website/images/ ไดเร็กทอรีไปยังไดเร็กทอรี /var/www/images/ บนเครื่องรีโมตที่คุณพิมพ์:

rsync -a /home/linuxize/images/ [email protected]:/var/www/images/

ใช้ตัวเลือก --delete หากคุณต้องการซิงโครไนซ์ไดเรกทอรีท้องถิ่นและระยะไกล โปรดใช้ความระมัดระวังเมื่อใช้ตัวเลือกนี้เนื่องจากจะเป็นการลบไฟล์ในไดเรกทอรีปลายทางหากไม่มีอยู่ในไดเรกทอรีต้นทาง

rsync -a --delete /home/linuxize/images/ [email protected]:/var/www/images/

หาก SSH บนรีโมตโฮสต์กำลังรับฟังพอร์ตอื่นที่ไม่ใช่ 22 ดีฟอลต์ให้ระบุพอร์ตโดยใช้ตัวเลือก -e ตัวอย่างเช่นถ้า SSH กำลังฟังพอร์ต 3322 คุณจะใช้:

rsync -a -e "ssh -p 3322" /home/linuxize/images/ [email protected]:/var/www/images/

เมื่อถ่ายโอนข้อมูลจำนวนมากขอแนะนำให้เรียกใช้คำสั่ง rsync ภายในเซสชันหน้าจอหรือใช้ตัวเลือก -P ซึ่งบอก rsync ให้แสดงแถบความคืบหน้าในระหว่างการถ่ายโอนและเก็บไฟล์ที่ถ่ายโอนบางส่วน:

rsync -a -P /home/linuxize/images/ [email protected]:/var/www/images/

ข้อสรุป

เราได้แสดงวิธีใช้ rsync ผ่าน SSH เพื่อคัดลอกและซิงโครไนซ์ไฟล์และไดเรกทอรี

คุณอาจต้องการอ่านวิธีการแยกไฟล์หรือไดเรกทอรีด้วย rsync

อย่าลังเลที่จะแสดงความคิดเห็นหากคุณมีคำถามใด ๆ

เทอร์มินัล rsync