mount
我对 Linux命令多次使用时如何工作有疑问。
经过一系列不幸的事件(Ubuntu 中的多次崩溃),我决定简单地备份我的数据并重新开始。因此,在使用可启动 USB 启动后,到目前为止,我已经安装了一个外部磁盘和我希望备份的两个分区中的第一个分区。然而,我注意到一些奇怪的事情。经过一些困难后,我发现我可以使用以下命令行安装两个驱动器:
sudo mount /dev/sdxx /mnt
将“xx”替换为正确的字母和数字。我首先安装了要备份的分区,然后导航到该驱动器中的主目录(我需要备份的目录)。然后我打开第二个终端窗口并安装外部磁盘。我一直相信/mnt
命令行末尾的位告诉计算机我希望将驱动器安装在哪个目录中;这可以解释为什么该/mnt
目录现在只有外部磁盘中的内容。然而,在我的第一个终端窗口中,/mnt/home/user/
根据第二个窗口,我仍然能够在我安装的第一个驱动器周围导航,即使路径 ( ) 不再存在。
- 为什么第一个终端窗口仍然允许我浏览看似不存在的目录?
此外,我已经开始使用一个简单的 zip 命令将文件备份到外部驱动器,该命令从包含我需要备份的所有内容的目录中的第一个终端运行:zip -r9 /mnt/backup.zip *
。看起来进展顺利;第二个终端显示/mnt
外部磁盘目录中生长的部分 zip 文件。
- 您是否有任何理由认为这在任何时候都会出错,或者这是完全合乎逻辑的行为?
答案1
问题1
来自安装手册页:
描述
Unix 系统中可访问的所有文件都排列在一棵大树中,即文件层次结构,根位于 / 。这些文件可以分布在多个设备上。 mount 命令用于将某个设备上找到的文件系统附加到大文件树。相反,umount(8) 命令将再次分离它。
树的主干或根是/
,因此称为根文件系统。正如您所发现的,在 Linux 中,可以将较大的磁盘安装为较小的块。为了保留您的目录,您必须选择:
选择较小的块,即:
sudo mkdir -v /mnt/home-backup sudo mount -v /dev/sdX/home/username /mnt/home-backup
使用
--bind option
sudo mkdir -v /mnt/entire-usb sudo mount -v /dev/sdX /mnt/entire-usb sudo mkdir -v /mnt/home-backup sudo mount --bind /mnt/entire-usb/home/username /mnt/home-backup
虽然绑定安装看起来令人困惑,但事实并非如此。它们用于使同一文件系统的某些部分在两个地方可写,以便我在一个地方所做的更新会反映在两个地方...在上面的示例中,在前两行中,我安装了整个 USB 记忆棒,我想我会备份整个磁盘。意识到我的错误,我将binded
整个磁盘的较小子集添加到新的安装点。
请注意,它更容易使用sudo umount /dev/sdX
,然后使用选项 1 重新安装它。
问题2
有一些目录您不想备份,因为它们将在重新安装期间重新创建,即/sys
/dev
/usr
和/etc
。也有可能,/tmp
所以在你的 zip 文件中/root
使用*
被一些人认为是一个坏主意。您需要:
- 重新开始,并使用上面的选项 1 挂载每个目录,并为每个目录使用单独的 zip 文件。
- 学习新东西,并使用
tar
而不是zip
. Tar 包含该-X
选项。
考虑:
$ cat exclude.lst
/usr
/dev
/sys
#Other Directories to exclude
tar -cvzf /mnt/backup.tar.gz /path/to/mount/point/ -X exclude.lst