Đồng bộ dữ liệu từ sftp/ssh server

Giả sử host example.com có thể ssh và ftp đến. Chúng ta có thể tạo sftp bằng user/pass hoặc user/private_key.

  • Public_key/Private_key có thể tạo nhờ công cụ của host hoặc lấy từ nguồn khác và import vào host. Ở đây, chúng tôi lấy cặp key của RPi và import vào host example.com. Khi đó có thể dùng Bitvise SSH Client để login vào host cũng như RPi với cùng client key, chỉ khác user name.
  • Dùng sftp để download như sau
sftp user[@host]:remote_path local_path

  • Hoặc dùng scp để tải file về RPi.
 scp user@host:[remote_path/*] [local_path]
  • rclone có thể sử dụng dịch vụ sftp để dùng example.com như một remote. Khi đó có thể chạy lệnh rclone sync để đồng bộ một thư mục của example.com và một thư mục của RPi.
    private_key của example.com giống với private_key của RPi nên khi tạo remote với sftp, chúng ta chọn private_key=~/.ssh/is_rsa

Tuy nhiên, sync bằng phương pháp trên khá chậm, một chiều (từ nguồn tới đích). Một thư mục 500MB ở hawkhost.com chép về RPi đặt tại HCMC với đường truyền 60Mbps mất khoảng 10 phút, vì còn phụ thuộc nhiều yếu tố.

  • sshfs: Một cách khác là dùng sshfs để mount một thư mục của example.com thành một thư mục local_path của RPi, sau đó dùng rsync để đồng bộ thư mục local_path sang một thư mục backup của RPi.
    • Cài sshfs
apt-get install sshfs
    • Mount thư mục của example.com thành thư mục sshfs_local_path của RPi
sshfs [user]@[host]:[remote_path] [ssh_local_path] -o allow_other,IdentityFile=[path_to_id_rsa]

    • Dùng rclone để sync với Google Drive (giả sử đã tạo remote gdrive với rclocne)
rclone sync [sshfs_local_path] gdrive:backup
    • Gở mount
umount [local_path]
  • Dùng rsync để sync thư mục remote về thư mục local
rsync --log-file=~/rsync.log -avzhe ssh user1@example.com:{folder1, folder2} local_folder

Khi đó ta có bản sao lưu thứ nhất trên RPi, sau đó có thể dùng rclone để sao lưu từ bản này lên ổ đĩa đám mây.

Comments Off on Đồng bộ dữ liệu từ sftp/ssh server

Filed under Software

Comments are closed.