如何将 Raspberry Pi 设置为 Linux 和 Windows 桌面的备份服务器如何将 Raspberry Pi 设置为 Linux 和 Windows 桌面的备份服务器如何将 Raspberry Pi 设置为 Linux 和 Windows 桌面的备份服务器如何将 Raspberry Pi 设置为 Linux 和 Windows 桌面的备份服务器
  • 文章
  • 正则表达式
    • 工具
  • 登录
找到的结果: {phrase} (显示: {results_count} 共: {results_count_total})
显示: {results_count} 共: {results_count_total}

加载更多搜索结果...

搜索范围
模糊匹配
搜索标题
搜索内容
发表 admin at 2025年2月28日
类别
  • 未分类
标签

如何将 Raspberry Pi 设置为 Linux 和 Windows 桌面的备份服务器

在此页

  1. 将 Raspberry Pi 设置为备份服务器
    1. 1。下载 Raspian 图片
    2. 2。将图像闪存到 microSD 卡上
    3. 3。首次启动/配置
    4. 4。扩展文件系统
    5. 5。更改用户密码
    6. 6。控制台登录
    7. 7.本土化
    8. 8.高级选项 <李>9。设置主机名
    9. 10。内存拆分
    10. 11。启用 OpenSSH 服务器
    11. 11。完成并重启
    12. 12。更新并安装所需的包
    13. 13。继续远程 SSH 连接或在 Raspberry Pi 上
    14. 14。找到并格式化外部 USB 驱动器
    15. 15。安装外部 USB 驱动器
    16. 16。在启动时挂载外部 USB 驱动器
    17. 17。配置桑巴
    18. 18。树莓派上的备份控制文件

    1. 19。创建公共 ssh 密钥
    2. 20。将公共 ssh 密钥复制到 Rasperry Pi 备份用户
    3. 21。在桌面上创建备份脚本

    1. 22。下载Cygwin
    2. 23。使用所需的包安装 Cygwin
    3. 24。创建公用 ssh 密钥
    4. 25。将公共 ssh 密钥复制到 Rasperry Pi 备份用户
    5. 26。在桌面上创建备份脚本

    Raspberry Pi 是一系列小型单板计算机。它们相当便宜,非常适合运行备份服务器或 voip 服务器。 2015 年 2 月,Raspberry Pi 2 发布。它有更多的 ram,更新的 cpu 和 4 个板载 USB 端口。

    Raspberry Pi 2 的当前价格为 35 美元。然而,除此之外你还需要一些其他的东西:

    • microSD 卡:Raspberry Pi 2 需要从 microSD 卡启动。任何应该使用 4GB 或更多。对于备份服务器,4GB 应该足够了。你可能想要一个阅读速度快的。
    • 微型 USB 电源充电器:您还需要一个电源。它由微型 USB 端口供电,因此您很可能会在家中使用不再需要的旧手机充电。
    • 外部 USB 存储:由于本指南是关于设置备份服务器的,因此您还需要获得外部 USB 存储。也许一个外部 512GB 硬盘就足够了,也许你需要一个 4TB 的驱动器。这完全取决于您的存储需求。
    • 外壳:最后一件事是外壳。你并不严格需要外壳,但如果你不使用外壳,那么你将只需要将整个主板放在某个地方并且更容易损坏。

    所以总成本大约是 35 美元。- 对于 Raspberry Pi,大约 10 美元。- 对于 microSD 卡,大约 10 美元。- 对于这种情况,微型 USB 充电器没有任何费用,因为您可能有一个,然后无论外部USB 驱动器成本。

    此外,为了检索备份,我设置了 samba,共享处于只读模式,没有任何必需的凭据。如果根据本指南正确配置,它将仅在 lan 中可用,并拒绝来自 lan 外部的任何连接尝试。设置 samba 用户和不同的凭据将超出本指南的范围。还有很多其他的 howtos 可以解释它,如果需要它可以很容易地合并。

    将 Raspberry Pi 设置为备份服务器

    将 Raspberry Pi 设置为备份服务器是其中“最”困难的部分,因为您首先必须刷新映像,然后准备好一切。但是,分步指南应该会带您完成它。

    1. 下载 Raspian 图片

    首先从这里下载当前的 Raspian Image https://www.raspberrypi.org/downloads/

    2. 将图像刷写到 microSD 卡上

    下载图像后,您需要将其闪存到 microSD 卡中。由于已经有优秀的指南可以做到这一点,因此没有必要在这里重复这一点。最好按照这里的指南

    3.首次启动/配置

    在用 Raspian Image 刷新 Raspberry Pi 后,将 HDMI 屏幕连接到它并启动它。首次启动时,您将看到一个配置屏幕。该配置屏幕非常简单,您应该设置一些内容。

    4.扩展文件系统

    首先,我们希望 SD 卡上有可用的全部空间。对于备份来说,这并不重要,因为它们无论如何都会存储在外部驱动器上。但是我确实喜欢有可用的空间。因此,选择 1 Expand Filesystem 然后系统会提示您在下次重新启动时通知文件系统将被扩展。

    5.更改用户密码

    然后我们要更改用户 \pi\ 的默认密码。因此,选择 2 Change User Password,然后键入所需的密码两次,每次都按 Enter。系统将再次提示您密码已更改的通知。

    6.控制台登录

    之后我们要确保我们不启动和 gui。所以选择 3 Enable Boot to Desktop/Scratch。在以下屏幕上,选择 Console Text console,需要登录(默认)。

    7.本地化

    然后我们要设置系统语言和其他可用语言、键盘布局等。为此我们进入 4 个国际化选项。当您输入时,您将看到更改语言、时区和键盘语言。对话框都很简单,所以我不会详细介绍。

    8.高级选项

    现在进入 8. 高级选项。我们还有另外一堆可以设置的东西。三个重要的是 A2 主机名、A3 内存拆分和 A4 SSH。

    9.设置主机名

    主机名将允许您通过 LAN 上的主机名访问 Raspberry Pi。当心:您只能使用字母和数字。在此示例中,我使用主机名 rpi2bu - Raspberry Pi 2 Backup 的缩写,但这完全取决于您。

    10.记忆分裂

    由于我们想将这个 Raspberry Pi 作为备份服务器运行,我们不想在 gpu 上浪费宝贵的内存。请记住:这是一个无头服务器。所以将 ram split 设置为 16MB。

    11. 启用 OpenSSH 服务器

    由于我们通过 ssh 使用 rsync 进行备份,并且由于 ssh 访问有利于 Raspberry Pi 的远程管理,因此还可以在高级选项菜单中启用 OpenSSH 服务器。

    11.完成并重启

    所以,这些都是要在配置屏幕上设置的所有内容,您现在可以从主配置中选择 。完成后,Raspberry Pi 会重新启动,稍后系统会提示您输入登录凭据。当前用户是 pi,密码设置为您在步骤 5 中设置的内容。它还会显示 Raspberry Pi 的当前 IP 地址。

    12.更新并安装所需的包

    要将 Raspberry Pi 作为备份服务器,我们需要安装两个额外的包:rsync 和 samba。 Rsync 是从 Windows/Linux 计算机同步文件的工具,然后 samba 将使备份在网络上可用(以只读模式)。

    由于总会有很多更改和更新,我们首先运行:

    sudo apt-get update && sudo apt-get upgrade

    然后我们通过以下方式安装所需的软件包:

    sudo apt-get install rsync samba

    13. 继续远程 SSH 连接或在 Raspberry Pi 上

    接下来的步骤可以在 Raspberry Pi 本身或通过 ssh 连接完成。我更喜欢 ssh 连接,而在 linux 上,我只是在我的 KDE 中使用 Konsole。在 Windows 上,你可以使用 Kitty

    14. 找到并格式化外部 USB 驱动器

    在我们配置 samba 服务器之前,我们需要挂载外部 usb 驱动器并创建一个备份用户。在我们可以挂载外部 USB 驱动器之前,我们需要对其进行格式化并知道其 UUID。因此,在连接外部 USB 驱动器之前,请运行:

    ls -al /dev/disk/by-uuid

    它会返回这样的东西:

    total 0
    drwxr-xr-x 2 root root 100 Mai 19 18:22 .
    drwxr-xr-x 6 root root 120 Jan  1  1970 ..
    lrwxrwxrwx 1 root root  15 Mai 19 18:22 13d368bf-6dbf-4751-8ba1-88bed06bef77 -> ../../mmcblk0p2
    lrwxrwxrwx 1 root root  15 Mai 19 18:22 15CD-3B79 -> ../../mmcblk0p1

    现在连接外部 USB 驱动器并再次运行命令。你会看到,结果是不同的,那里有一个新设备。

    total 0
    drwxr-xr-x 2 root root 100 Mai 19 18:22 .
    drwxr-xr-x 6 root root 120 Jan  1  1970 ..
    lrwxrwxrwx 1 root root  15 Mai 19 18:22 13d368bf-6dbf-4751-8ba1-88bed06bef77 -> ../../mmcblk0p2
    lrwxrwxrwx 1 root root  15 Mai 19 18:22 15CD-3B79 -> ../../mmcblk0p1
    lrwxrwxrwx 1 root root  10 Mai 19 18:22 eac53de3-9f06-4e46-999c-684da279298b -> ../../sda1

    这告诉我们两件事。新设备是 /dev/sda1,它的 uuid 是 eac53de3-9f06-4e46-999c-684da279298b。当您附加多个 dirves 时,sda1 可以更改。因此,出于稍后的挂载目的,我们只需使用它的 UUID,只要分区未更改或正在格式化分区,它就不会更改——但是,即将将分区格式化为合适的文件系统。

    在我们使用它之前,我们必须格式化这个驱动器。我更喜欢 ext4,但有些人可能更喜欢 btrfs,因为它的快照和完整性检查。要将其格式化为 ext4,只需运行以下命令:

    sudo mkfs.ext4 /dev/sda1

    如前所述,格式化也会导致更改 UUID,因此您需要再次发出上述命令并记下新的 UUID。

    15.挂载外部USB驱动器

    接下来的事情是我们必须安装它。在这里,您必须决定要安装它的位置。我选择将驱动器安装在备份用户的主目录中。如果我愿意,我也可以将它安装为 /home。但是,如果我有多个备份要做,我喜欢将它们制作到单独的驱动器上。所以一个用户=1 个驱动器,驱动器安装在用户主目录中。在 Rasperry Pi 上,您可以直接连接 4 个 USB 设备,因此如果需要,它很容易扩展到另一个用户。在我安装它之前,我添加了相应的备份用户 - 在这个 howto 中我称该用户为 bu。为了创建该用户,请运行以下命令:

    sudo adduser bu

    系统将再次提示您提供该用户的密码两次。

    添加用户后,您可以使用以下命令轻松安装外部驱动器:

    sudo mount /dev/sda1 /home/bu

    然而,在我们使用它之前,还需要执行最后一步。您现在还需要将已安装文件夹的所有权更改为 bu 用户:

    sudo chown bu:bu /home/bu

    所以,我们现在已经安装了外部 USB 驱动器并设置了相应的权限。如果您现在运行以下命令,您会看到 /dev/sda1 已挂载到 /home/bu

    df -h
    Filesystem      Size  Used Avail Use% Mounted on
    rootfs           15G  2.4G   12G  18% /
    /dev/root        15G  2.4G   12G  18% /
    devtmpfs        484M     0  484M   0% /dev
    tmpfs            98M  236K   98M   1% /run
    tmpfs           5.0M     0  5.0M   0% /run/lock
    tmpfs           195M     0  195M   0% /run/shm
    /dev/mmcblk0p1   56M   19M   37M  34% /boot
    /dev/sda1       2.7T  260M  2.6T   1% /home/bu

    由于我已经在外部 USB 驱动器上有一些测试数据,它显示我已经使用了 260MB。在新驱动器上它应该为零。

    16.启动时挂载外部USB驱动器

    一切似乎都找到了,但重启后,外部 USB 驱动器不再安装。通常您只需在 /etc/fstab 中添加一个条目,但存在快速启动和 USB 检测速度太慢的问题。解决方案相当简单。

    编辑:/boot/cmdline.txt

    你会看到有一行包含:

    dwc_otg.lpm_enable=0 console=ttyAMA0,115200 console=tty1 root=/dev/mmcblk0p2 rootfstype=ext4 elevator=deadline rootwait

    只需将 rootdelay=10 添加到它,这样它现在看起来是:

    dwc_otg.lpm_enable=0 console=ttyAMA0,115200 console=tty1 root=/dev/mmcblk0p2 rootfstype=ext4 elevator=deadline rootwait rootdelay=10

    接下来编辑/etc/fstab

    并将其添加到该文件的末尾

    UUID=eac53de3-9f06-4e46-999c-684da279298b       /home/bu        ext4    defaults        0       2

    所以现在我们已经确保外部 USB 驱动器即使在重新启动后也安装在 /home/bu 中。如果您连接了多个我从未测试过的 USB 设备,并且您注意到我没有正确添加所有这些设备,那么可以将 rootdealy 扩展到 10 个以上。

    17.配置Samba

    接下来配置 samba,以便它可以使所有备份在网络上可用。 Samba 是一个守护进程,它提供网络共享,也可以使用 smb 协议通过 Windows 进行访问。

    只需编辑 /etc/samba/smb.conf 并将配置文件的上下文替换为:

    [global]
    
       workgroup = WORKGROUP
       server string = %h server
    ;   wins support = no
    ;   wins server = w.x.y.z
       dns proxy = no
    ;   name resolve order = lmhosts host wins bcast
       name resolve order = bcast lmhosts host wins
    
        socket options = TCP_NODELAY IPTOS_LOWDELAY SO_KEEPALIVE
    
    ;   interfaces = 127.0.0.0/8 eth0
    ;   bind interfaces only = yes
    
       hosts allow = 127.0.0.1, 10.0.0.0/24
       hosts deny = 0.0.0.0/0
    
       log file = /var/log/samba/log.%m
       max log size = 1000
    #   syslog only = no
       syslog = 0
       panic action = /usr/share/samba/panic-action %d
    
       security = user
       encrypt passwords = true
       map to guest = bad user
       guest account = bu
    
    #   valid users = root
    
    #======================= Share Definitions =======================
    
    [Backup]
            comment = Backup Share
            path = /home/bu
            read only = yes
            guest only = yes
            guest ok = yes
            hosts allow = 127.0.0.1, 10.0.0.0/24
            force user = bu
            force group = bu
            hosts deny = 0.0.0.0/0

    为了确保没有任何内容泄漏到 lan 之外,我在全局部分设置为拒绝每个 ip 地址,只允许 localhost 和 lan。我的局域网使用 10.0.0.x。您可能使用 192.168.0.0,因此相应地更改它。

    此外,在全局部分中,您会看到来宾帐户是 bu 用户,在实际共享中,您会看到来宾具有访问权限并且是只读访问权限。

    保存并退出文件并重启 samba:

    sudo /etc/init.d/samba restart

    有了这个,就没有完成配置服务。

    18. 在树莓派上备份控制文件

    创建并编辑 /home/bu/backups.sh 并用以下内容填充它:

    #!/usr/bin/env bash
    
    basePath="/home/bu"
    
    action="${1}"
    
    function checkMonth ()
    {
            now=$(date +"%Y-%m")
            last=$(<checkMonth.txt)
            if [[ ${now} != ${last} ]]
            then
                    # New Month
                    mkdir -p "${basePath}/current/"
                    rm -Rf "${basePath}/current/"*
                    echo "${now}" > "checkMonth.txt"
            fi
    }
    
    
    
    function makeHardlink ()
    {
            # Make hardlink copy
            now=$(date +"%Y-%m-%d_%H-%M")
            mkdir -p "${basePath}/old/${now}"
            cp -al "${basePath}/current"* "${basePath}/old/${now}"
    }
    
    
    
    function checkFree ()
    {
            # Check if old files need to be deleted
            freeSpace=$( df -P | grep "${basePath}" | awk '{print $4}' )
            curUse=$( cd "${basePath}/current" | du -s | awk '{print $1}' )
            estUse=$(( curUse * 2 ))
    
            echo "${freeSpace} - ${curUse} - ${estUse}"
    
            while [[ ${freeSpace} -le ${estUse} ]]
            do
                    echo "Not enough space... removing old backups..."
                    IFS= read -r -d $'\0' line < <(find "${basePath}/old" -type d -maxdepth 1 -printf '% %p\0' 2>/dev/null | sort -z -n)
                    oldDir="${line#* }"
                    rm -Rf "${oldDir}"
                    freeSpace=$( df -P | grep "${basePath}" | awk '{print $4}' )
                    echo "${freeSpace} - ${curUse} - ${estUse}"
            done
    }
    
    
    
    case ${action} in
    
            newMonth)
                            checkMonth
                            ;;
            hardLink)
                            makeHardlink
                            checkFree
                            ;;
    esac

    这个脚本有两个目的。它应该在每次备份之前和之后运行。

    checkMonth 函数将查看自上次备份以来是否有新的月份。如您所知,硬盘可能会损坏,或者它的某些部分可能会出现故障。如果发生这种情况,您将无法再访问损坏扇区中的数据文件。但是,每次创建完整备份需要大量磁盘空间。为了节省磁盘空间,我硬链接备份,这意味着我只将文件系统“索引”文件写入指向相同数据的新文件。因此,如果数据扇区损坏,则无法再检索所有硬链接文件的文件,因为它们都指向相同的数据。为了将这种风险降到最低,我确保每个月都会编写一个完整的新备份集。这会占用您的存储空间。例如。如果您有 400 GB 数据,这意味着在第 1 个月它将使用 400 GB + 已更改的文件。在第 2 个月,它将使用另外 400 GB + 更改的文件等。

    这也意味着新月的第一次同步和第一次同步将需要很长时间。其他的都很快。

    makeHardlink 函数实际上会创建上次备份的硬链接副本。硬链接副本几乎不需要空间,在备份上,只有新文件被重新写入。我还结合硬链接副本运行了 checkFree 函数。

    checkFree 函数检查 /home/bu 的可用空间。它还会检查上次备份使用的大小。如果可用空间小于上次备份的两倍,那么它将开始删除旧备份,直到它再次有两倍的可用空间。我倾向于认为,如果您已经有 400 GB 的数据要备份,那么在第二天/下一次备份时间,您将拥有超过 800 GB 的数据的可能性不大。

    这意味着您可以“永远”使用此备份机制。如果可用空间太小,它将自动删除旧备份。

    保存该脚本后使其可执行并将所有权更改为 bu 用户:

    sudo 0755 /home/bu/backups.sh
    sudo chown bu:bu /home/bu/backups.sh

    这就是 Raspberry Pi 方面的内容。

    从 Linux 备份到 Rasperry Pi

    要备份到 Raspberry Pi,您只需将当前用户(或 root,如果需要)添加到 Raspberry Pi 备份用户帐户。

    我假设您已经安装了一个 ssh 客户端,并且您有一个可以使用的公钥。最终你需要先安装 rsync。

    19. 创建公钥

    如果到目前为止您还没有公钥,请创建一个:

    ssh-keygen -t rsa -b 4096 -C ""

    当然,将其替换为您的电子邮件,或者根据需要填写任何内容。

    20.将ssh公钥复制到Rasperry Pi备份用户

    然后你需要将你的公钥复制到树莓派备份用户账户:

    ssh-copy-id ~/.ssh/id_rsa.pub 

    将 bu 和 rpi2bu 替换为您的实际备份用户和主机名。如果出于某种原因无法通过主机名检测到 Raspberry Pi,请使用其 IP 地址。

    21.在桌面上创建备份脚本

    现在我们无需提供密码即可登录 Raspberry Pi,我们需要一个小的 bash 脚本来进行备份。在桌面上创建一个 backup.sh。

    编辑 ~/Desktop/backup.sh\ 并添加这个

    #!/usr/bin/env bash
    
    # Check for new month
    ssh  '/home/bu/backups.sh newMonth'
    # Run rsync backup
    rsync -avzpH  --partial --delete ~/ :/home/bu/current/
    # Make backup and check regarding free space
    ssh  '/home/bu/backups.sh hardLink'

    然后使其可执行:

    chmod 0755 ~/Desktop/backup.sh

    就是这样 - 当然不要忘记根据 Raspberry Pi 的主机名进行设置,如果您使用不同的东西,请更改用户。

    从 Windows 备份到 Rasperry Pi

    在 Windows 上它有点难,因为所有那些不错的 *nix 工具都丢失了。特别是 ssh 和 rsync。然而,这里的简单解决方案是使用相应的软件包安装 cygwin。

    22. 下载 Cygwin

    首先我们需要下载并安装cygwin。从这里下载。您很可能想使用 64 位版本。

    23. 使用所需的包安装 Cygwin

    Cygwin 安装程序下载完成后,运行它。然后系统会提示您进行一些输入。根据下表输入:

    选择下载源 -> 从 Internet 安装
    选择根安装目录 -> C

    之后,您将看到“选择包”对话框。这里选择 rsync 和 openssh 很重要。最好您可以使用搜索框过滤列表。只需输入 rsync,然后您就会在 Net 文件夹中找到它。单击它,然后单击 Bin?现在应该检查列。对 openssh 重复此操作。

    之后它会开始下载所有的包并安装它们。因为它会下载很多 *nix 工具,所以需要一点时间。

    24. 创建公钥

    安装包含 rsync 和 openssh 的 cygwin 后,您的开始菜单中将有一个新的“Cygwin”条目。在该条目中,您可以找到 Cygwin 终端的链接。运行它,终端将打开。在终端中,我们通过发出以下命令来创建公共 ssh 密钥:

    ssh-keygen -t rsa -b 4096 -C ""

    当然,将其替换为您的电子邮件,或者根据需要填写任何内容。

    25.将ssh公钥复制到Rasperry Pi备份用户

    然后你需要将你的公钥复制到树莓派备份用户账户:

    ssh-copy-id ~/.ssh/id_rsa.pub 

    将 bu 和 rpi2bu 替换为您的实际备份用户和主机名。如果出于某种原因无法通过主机名检测到 Raspberry Pi,请使用其 IP 地址。

    26. 在桌面创建备份脚本

    现在打开你的文本编辑器并输入以下内容:

    REM Just a little script for making backups
    
    REM Check if it's a new month
    c:\cygwin\bin\ssh.exe  '/home/bu/backups.sh newMonth'
    REM Make backup with rsync
    c:\cygwin\bin\rsync -avzpH  --partial --delete -e "c:\cygwin\bin\ssh.exe" /cygdrive/c/Users :/home/bu/current/
    REM Make hardlink copy and clean up space if necessary
    c:\cygwin\bin\ssh.exe  '/home/bu/backups.sh hardLink'

    将此文件另存为 backup.bat

    在您的桌面上(或任何其他位置)。

    如果您将 Cygwin 安装到任何其他文件夹,请提供相应的路径(默认情况下它将使用 c

    当您现在单击桌面上的 backup.bat 文件时,它将打开一个终端并进行备份。您也可以从 Windows 命令 (cmd.exe) 运行它,这样它就不会在完成后自动关闭。

    检查您的备份

    仅进行备份只是成功的一半。您需要验证 (a) 备份已经完成,并且 (b) 如果需要,您可以使用它们来恢复内容。

    为了简单起见,我们更早地设置了 samba。如果检查网络环境配置正确,那么您附近应该有一台名为 rpi2bu 的计算机/服务器。在 Windows 中,只需打开资源管理器,进入网络并等待 2-3 秒让它出现。在 Linux 上,例如在 Dolphin 中,您只需单击位置边栏中的网络图标。然后您可以在没有任何凭据的情况下进入该计算机/服务器,然后它会显示一个名为 Backup 的共享。当您进入该共享时,您会看到两个文件夹 current 和 old 以及两个文件 backups.sh 和 checkMonth.txt。您可以将文件复制回您的计算机,但由于 samba 设置为只读,因此您无法删除这些文件。

    因此,将一些文件复制回您的计算机并验证它们是否运行正常。如果他们这样做,则您已成功进行备份。

©2015-2025 艾丽卡 support@alaica.com