一:普通备份: rsync -aviHAXKPh --partial --delete dongping@xxx.xxx.226.13:/home/dongping/myradio/ myradio/ 二:系统备份: LiveCD tat 备份还原系统详解 现在的系统完全复制到另一台电脑上的详细过程 https://bbs.archlinuxcn.org/viewtopic.php?id=4611 两台电脑均从救援/备用系统启动,并挂掉原/新根目录到 /mnt。联网并在旧系统启动 sshd,然后: rsync -aviHAXKh --partial --delete old_computer:/mnt /mnt 然后装引导、写引导配置,改 /etc/fstab,重启。 直接在旧系统中备份用此命令:rsync -aviHAXKh --partial --delete --exclude={"/dev/*","/proc/*","/sys/*","/tmp/*","/run/*","/mnt/*","/lost+found"} /旧系统的根目录 /新磁盘挂载点 步骤如下: 1、在当前系统:挂载新硬盘分区sdc;(mount or udisksctl) 2、在当前系统:rsync当前系统到新硬盘分区sdc;(sudo rsync -aviHAXKh --partial --delete --exclude={"/dev/*","/proc/*","/sys/*","/tmp/*","/run/*","/mnt/*","/lost+found"} /旧系统的根目录 /新磁盘挂载点) 3、在当前系统:新硬盘分区创建相应目录(/dev /porc等);(可省略这步) 4、在当前系统:安装arch-install-scripts工具(change root ---arch wiki); 5、在当前系统:修改新硬盘分区sdcX内的/etc/fstab,主要是UUID;(sudo blkid /dev/sdcX ,或sudo blkid) 6、当前系统切换到tty3并root登录,运行命令arch-chroot 到新硬盘分区sdc的系统;(arch-chroot 挂载点) (重要:系统文件不同的话,可能要重新生成内核镜像:mkinitcpio -p linux) 7、在新系统:安装引导:grub-install --recheck /dev/sdc (如果是EFI/GTP 引导方式);grub-install --target=i386-pc /dev/sdx (如果是BIOS/MBR引导方式) sdc磁盘标识类型如果是dos的,上面安装命令会成功的,如果sdc磁盘标识类型是gpt的,则注意: wiki:安装 GRUB 前,在一个没有文件系统的磁盘上,用 fdisk 或 gdisk 创建一个 +1M 分区,设置为 BIOS boot 类型,在 fdisk 中的类型号是 4, 在 gdisk 中的类型是 ef02,在 parted 中是 bios_grub。此分区可以在磁盘前 2TB 的任何位置。分区建立好后,按下面的命令安装启动管理器。 安装grub有时会需要清空磁盘2048前的资料 sudo dd if=/dev/zero of=/dev/sdb seek=1 count=2047 bs=1b 8、在新系统:生成引导配置:grub-mkconfig -o /boot/grub/grub.cfg 安装 软件包 os-prober(pacman -S os-prober) 并 挂载(mount /dev/sda1 /mnt) 包含其它系统的磁盘,grub-mkconfig 会自动搜索已经安装的其它系统并添加到启动菜单。 9、exit命令退出新系统并重启,电脑bios设置新硬盘sdc引导; 10、系统启动后运行lsblk,看到 / 已经在sdc,迁移成功。 11,在其他电脑使用的话,重新设置一下网络配置即可。(ip link show ) 安装后检查 https://www.viseator.com/2017/05/17/arch_install/ 如果你是多系统,请注意上面一节中对os-prober这个包的安装。 强烈建议使用如下命令检查是否成功生成各系统的入口,如果没有正常生成会出现开机没有系统入口的情况: vim /boot/grub/grub.cfg 检查接近末尾的menuentry部分是否有windows或其他系统名入口。下图例子中是Arch Linux入口与检测到的windows10入口(安装在/dev/sda1),具体情况可能有不同: 如果你没有看到Arch Linux系统入口或者该文件不存在,请先检查/boot目录是否正确部署linux内核: cd /boot ls 查看是否有initramfs-linux-fallback.img initramfs-linux.img intel-ucode.img vmlinuz-linux这几个文件,如果都没有,说明linux内核没有被正确部署,很有可能是/boot目录没有被正确挂载导致的,确认/boot目录无误后,可以重新部署linux内核: pacman -S linux 再重新生成配置文件,就可以找到系统入口。 如果你已经安装os-prober包并生成配置文件后还是没有生成其他系统的入口: 你目前处的U盘安装环境下有可能无法检测到其他系统的入口,请在下一步中重启登陆之后重新运行: grub-mkconfig -o /boot/grub/grub.cfg 如果还没有生成其他系统的入口,请参照: https://wiki.archlinux.org/index.php/GRUB/Tips_and_tricks#Combining_the_use_of_UUIDs_and_basic_scripting 编辑配置文件手动添加引导的分区入口。 打包法: $ tar cvpzf ~/root.tar.gz --exclude=/proc --exclude=/lost+found --exclude=/mnt --exclude=/sys --exclude=/media --exclude=/home / 用 LiveCD 启动公司电脑,将压缩包解压: $ tar xvpf root.tar.gz -C / 修改好 /etc/fstab 和 grub 后重启。 然而,启动后却出错了!提示: ...device /dev/sda3 not found... 因为这个问题,实在是折腾了好久,网上搜寻了大量资料后才发现,原来还要重新生成内核镜像: # 用 LiveCD 启动电脑,然后使用 chroot 命令进入恢复的 Arch 系统(存放在 /dev/sda8 上) # mount /dev/sda8 /mnt # mount -o bind /proc /mnt/proc # mount -o bind /dev /mnt/dev # mount -o bind /sys /mnt/sys # chroot /mnt # mkinitcpio -p linux # exit 然后重启,这次终于可以进入系统了。 打包时加上 --acls --xattrs,以免发生问题。你试试 ping 命令还能不能用? 建议在救援/备用系统上打包,这样不需要手动排除特殊的文件系统。你的命令忘记了排除 dev 和 /run。 需要重新生成镜像是应该 / 分区的格式变了,或者硬盘控制器变了之类的事情。这种时候你用带 fallback 字样的镜像就可以了。 当端口不是默认22时: 一是: --port 二是: 透過 .ssh/config, 做 ssh 遠端機器的相關設定, 如下述範例: vim .ssh/config Host REMOTE_HOST # 這個可以寫簡寫, 但是下面 rsync 的REMOTE_HOST 需與此一致. HostName REMOTE_HOST User YOUR_USERNAME Port 1234 IdentityFile /home/YOUR_USERNAME/.ssh/id_rsa # 如果有在寫, 沒有這行可跳過不寫 rsync -avz --bwlimit=3000 REMOTE_HOST:data_path . # 這邊就可以直接 rsync 即可.