V2EX = way to explore
V2EX 是一个关于分享和探索的地方
现在注册
已注册用户请  登录
V2EX 提问指南
nbweb
V2EX  ›  问与答

求助 rsync 的用法

  •  
  •   nbweb · 2021-05-08 08:35:09 +08:00 · 1786 次点击
    这是一个创建于 1323 天前的主题,其中的信息可能已经有所发展或是发生改变。

    博客在一台 vps 上,想定时备份一下,两个 vps 都是 debian,昨天折腾了一下午,也没能成功。

    A 的 vps 是博客,想备份到 B 的 vps 上去,以防万一。

    问题: 1,是不是要把 A 当成 rsync 的服务器来用?自己配置一个 rysncd.conf 的文件?这个文件里面内容是啥? 2,是不是有两种方式登录,一种是 ssh,一种是 rsync 的方式?我在 rsycd.conf 里写了用户名和密码,却总你不成功。 3,没有用证书登录,如何用免密码同步备份?

    谢谢各位大佬。

    12 条回复    2023-03-17 13:21:13 +08:00
    yEhwG10ZJa83067x
        1
    yEhwG10ZJa83067x  
       2021-05-08 08:41:32 +08:00
    nbweb
        2
    nbweb  
    OP
       2021-05-08 08:51:09 +08:00
    @justrand 非常感谢,有几点不明,希望指点。

    5.2 rsync 协议
    除了使用 SSH,如果另一台服务器安装并运行了 rsync 守护程序,则也可以用 rsync://协议。
    这一句,意思是说,如果用 rsync 协议来传输,那么本地和远端,都需要配置 rsycd.conf,把 rsync 运行起来? debian 里面默认 rsyc 是不运行的。

    另外这个 module 资源名,是哪里配置的?本地和远端都需要配置吗?

    感谢!
    toaruScar
        3
    toaruScar  
       2021-05-08 08:58:16 +08:00
    最简单的是直接用定时工具( systemd,corntab )之类的定时跑一下 rsync 命令,这种配置下,就不需要设置 rsync 的 daemon 了。
    > 3,没有用证书登录,如何用免密码同步备份?
    可以直接在 A 生成一个 rsync 专用的密钥,然后把公钥拷到 B 的 authorized_keys 里面,并用“command=”的配置把这公钥可运行的命令锁住,这样是最基本的跨 host 拷贝文件了。
    iBugOne
        4
    iBugOne  
       2021-05-08 08:58:18 +08:00
    Rsync 支持多种协议,包括 SSH 和专门的 Rsync 协议,其中 Rsync over SSH 就和本地 Rsync 没啥区别(是的你可以用 Rsync 同步本地的资料,我就这样把系统盘定期备份到另一块硬盘上的)。

    如果你不需要对外公开服务,那么你没有必要研究 rsyncd 服务端,直接使用 over SSH 即可,例如你可以在 B 上运行

    rsync -a --delete root@A:/var/www/html /mnt/backup/A

    如果你需要提供公开的 Rsync 服务并且不方便通过 SSH 提供的话(常见于软件镜像站),才需要配置 rsyncd 服务端(比如 rsyncd.conf )。对于「备份一个 VPS 」来说你应该直接忽略这部分。
    nbweb
        5
    nbweb  
    OP
       2021-05-08 09:21:29 +08:00
    @iBugOne 非常感谢。

    其实我是想把美国 vps 上的博客,备份到我家里 nas 里面,在家里 nas 上的 debian 试了一下,不行。

    rsync -a -e 'ssh -p 8022' --delete root@usa-vps-ip:/root/nginx-1.19.3.tar.gz /home/backup

    报错如下:
    root@usa-vps-ip: Permission denied (publickey).
    rsync: connection unexpectedly closed (0 bytes received so far) [Receiver]
    rsync error: error in rsync protocol data stream (code 12) at io.c(235) [Receiver=3.1.3]
    starrycat
        6
    starrycat  
       2021-05-08 09:48:00 +08:00 via Android
    https://starrycat.me/blog-backup-rsync-migrate-google-cloud-platform.html 不过我是手动备份,自动备份可能要写个定时脚本
    iBugOne
        7
    iBugOne  
       2021-05-08 14:48:10 +08:00
    @nbweb 你这报错信息也太明显了吧。。。

    root@usa-vps-ip: Permission denied (publickey).

    自查一下
    xiaoyuesanshui
        8
    xiaoyuesanshui  
       2023-03-09 11:18:37 +08:00
    @toaruScar 老哥,这部分可不可以仔细讲讲?或者有没有啥文档参考?
    > 3 ,没有用证书登录,如何用免密码同步备份?
    可以直接在 A 生成一个 rsync 专用的密钥,然后把公钥拷到 B 的 authorized_keys 里面,并用“command=”的配置把这公钥可运行的命令锁住,这样是最基本的跨 host 拷贝文件了。
    xiaoyuesanshui
        10
    xiaoyuesanshui  
       2023-03-16 08:45:43 +08:00
    @toaruScar 老哥 我研究明白 command=这部分了。但是我每太想明白需要用 command=锁住哪些命令。我试过 command=/usr/bin/rsync 但是也不能实现同步
    toaruScar
        11
    toaruScar  
       2023-03-16 23:07:26 +08:00 via iPhone
    xiaoyuesanshui
        12
    xiaoyuesanshui  
       2023-03-17 13:21:13 +08:00
    @toaruScar 多谢多谢
    关于   ·   帮助文档   ·   博客   ·   API   ·   FAQ   ·   实用小工具   ·   2808 人在线   最高记录 6679   ·     Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 · 24ms · UTC 08:01 · PVG 16:01 · LAX 00:01 · JFK 03:01
    Developed with CodeLauncher
    ♥ Do have faith in what you're doing.