menu 我的书签 Linux命令学习
文章开始
文章结尾

Linux 挂载一个硬盘

在Linux中挂载一个硬盘通常需要以下几个步骤。假设你已经有一个新硬盘并想挂载它,步骤包括识别设备、创建分区、格式化分区并挂载它。


### 1. **确认硬盘设备名称**


首先,确认系统识别到了你的硬盘。可以使用 `lsblk` 或 `fdisk` 命令查看现有的硬盘设备。


```bash

lsblk

```



```bash

sudo fdisk -l

```


这将列出所有已连接的磁盘和分区。常见的硬盘设备名是 `/dev/sda`, `/dev/sdb`, `/dev/nvme0n1` 等。


### 2. **分区硬盘(如果需要)**


如果硬盘还没有分区,你需要使用 `fdisk`、`parted` 或 `cfdisk` 工具来为硬盘创建分区。以 `fdisk` 为例:


```bash

sudo fdisk /dev/sdX

```


其中 `/dev/sdX` 是你要分区的硬盘设备。进入 `fdisk` 命令后:


- 输入 `n` 来创建一个新分区。

- 输入 `p` 创建主分区。

- 然后设置分区大小。

- 最后输入 `w` 来保存分区表并退出。


### 3. **格式化分区**


假设你已经创建了分区,接下来需要对分区进行格式化。常见的文件系统格式是 `ext4`。


```bash

sudo mkfs.ext4 /dev/sdX1

```


其中 `/dev/sdX1` 是刚创建的分区。


### 4. **创建挂载点**


挂载点是一个目录,硬盘的内容会挂载在该目录下。通常,挂载点可以是 `/mnt` 或 `/media` 目录中的一个子目录。


```bash

sudo mkdir /mnt/mydisk

```


你可以根据需要将 `mydisk` 改为其他名称。


### 5. **挂载硬盘**


使用 `mount` 命令来挂载格式化后的分区:


```bash

sudo mount /dev/sdX1 /mnt/mydisk

```


这样,硬盘就挂载到了 `/mnt/mydisk` 目录。


### 6. **确认挂载**


你可以使用 `df -h` 命令来确认硬盘是否正确挂载:


```bash

df -h

```


查看是否列出了 `/mnt/mydisk`。


### 7. **设置开机自动挂载(可选)**


如果你想让硬盘在每次开机时自动挂载,你需要编辑 `/etc/fstab` 文件。


1. 获取分区的 UUID(比使用 `/dev/sdX1` 更稳定):

 

  ```bash

  sudo blkid /dev/sdX1

  ```

2. 编辑 `/etc/fstab` 文件:

 

  ```bash

  sudo nano /etc/fstab

  ```

3. 添加类似以下内容的一行:

 

  ```

  UUID=<你的分区UUID> /mnt/mydisk ext4 defaults 0 2

  ```

4. 保存并退出。你可以通过重启系统或运行以下命令测试自动挂载:

 

  ```bash

  sudo mount -a

  ```


### 总结


1. 使用 `lsblk` 或 `fdisk -l` 识别硬盘。

2. (可选)使用 `fdisk` 为硬盘创建分区。

3. 使用 `mkfs.ext4` 格式化分区。

4. 创建挂载点,并使用 `mount` 挂载硬盘。

5. (可选)编辑 `/etc/fstab` 设置自动挂载。



在Linux系统中,`/dev` 目录下存放的是所有设备的文件。`dev` 是 "device"(设备)的缩写,表示硬件设备的接口文件,Linux通过这些设备文件与硬件进行交互。


### 解释 `/dev` 和设备文件

- **`/dev` 目录**:这是设备文件的存放位置,几乎所有硬件设备(如硬盘、光驱、键盘、网络接口等)都会在 `/dev` 下有一个对应的文件。Linux 将硬件设备视作文件,通过这些文件来读取和写入数据。

 

- **设备文件**:这些文件并不是真正的文件,而是与硬件设备的接口。通过读取或写入这些设备文件,Linux可以与硬件进行通信。例如,当你访问 `/dev/sda1` 时,实际上是在与一个硬盘设备的第一个分区进行操作。


### `/dev/hda1` 是什么?

`/dev/hda1` 是一个设备文件,表示一个硬盘设备的第一个分区。


- **`hd`**:表示IDE类型的硬盘设备(早期的硬盘接口类型)。

- **`a`**:表示第一个硬盘,`hda` 就是第一个硬盘设备。如果有多个硬盘,第二个硬盘会是 `hdb`,依次类推。

- **`1`**:表示该硬盘的第一个分区。`hda2` 则表示第二个分区,`hda3` 表示第三个分区。


不过,现代Linux系统通常使用`/dev/sdX`表示硬盘设备,而不是`/dev/hdX`。`sd` 表示的是SCSI、SATA、USB或其他接口类型的存储设备。比如:

- `/dev/sda1`:表示第一个硬盘的第一个分区。

- `/dev/sdb2`:表示第二个硬盘的第二个分区。


### 总结

- **`/dev`**:是设备文件所在的目录,Linux系统通过这些文件与硬件设备通信。

- **`/dev/hda1`**:表示第一个IDE硬盘的第一个分区,现代系统多使用 `/dev/sdX` 表示硬盘和分区。


当你使用 `mount /dev/hda1 /mnt` 命令时,实际上是将第一个硬盘的第一个分区(`/dev/hda1`)挂载到 `/mnt` 目录下,以便访问硬盘中的文件。



当你执行 `mount /dev/sdd1 /mnt/lenovo/` 命令时,系统输出了 `FUSE exfat 1.2.7`,这表示你的系统正在使用 **FUSE** (Filesystem in Userspace) 和 **exFAT** 文件系统驱动程序 `1.2.7` 版本来挂载这个分区。


### 解释:

1. **FUSE (Filesystem in Userspace)**:

  - FUSE 是一种允许非特权用户创建自己的文件系统的工具,它是在用户空间运行的,而不需要修改内核。

  - 它通常用于支持Linux内核不直接支持的文件系统,例如 NTFS、exFAT 等。


2. **exFAT 文件系统**:

  - exFAT(Extended File Allocation Table)是微软开发的一种文件系统,专为闪存驱动器(如USB闪存盘、SD卡等)设计。

  - 相较于FAT32,exFAT支持更大的文件和分区大小,适合存储大文件(超过4GB)。

  - 在大多数Linux系统上,exFAT并不是原生支持的,需要通过 FUSE 提供的 exFAT 驱动程序来挂载 exFAT 文件系统。


3. **1.2.7 版本**:

  - 这表示你当前正在使用的 `exFAT` 驱动程序的版本是 `1.2.7`。


### 总结:

这条信息的意思是你的Linux系统正在使用 `FUSE` 和 `exFAT` 驱动程序 `1.2.7` 来挂载一个格式化为 exFAT 文件系统的分区 `/dev/sdd1`。这通常表示挂载操作成功,你可以访问 `/mnt/lenovo/` 目录中的内容。


如果你能成功访问目录中的文件,那么挂载已经完成。如果遇到任何问题,可能需要检查是否正确安装了 `fuse-exfat` 驱动程序。



在 Linux 中使用 `cp` 命令复制文件时,如果想显示复制过程中的进度,可以使用 `rsync` 或 `cp` 命令结合 `pv` 来完成。


### 方法 1:使用 `rsync` 显示进度


`rsync` 是一个功能强大的文件复制工具,支持增量传输,并且内置了显示进度的功能。你可以用 `rsync` 代替 `cp` 命令来复制目录,同时显示进度。


```bash

rsync -a --progress zhanglei /mnt/lenovo/export

```


解释:

- `-a`:归档模式,保留文件权限、时间戳、符号链接等。

- `--progress`:显示每个文件的传输进度。


### 方法 2:使用 `cp` 结合 `pv` 命令

`pv` (Pipe Viewer) 是一个可以用来监控数据传输进度的工具。通过 `pv` 和 `tar` 或 `cpio` 等工具组合,可以在复制文件时显示进度。


1. 安装 `pv`(如果尚未安装):

  - 在 Ubuntu/Debian 系统上:

    ```bash

    sudo apt install pv

    ```

  - 在 CentOS/RHEL 系统上:

    ```bash

    sudo yum install pv

    ```


2. 使用 `pv` 和 `tar` 组合实现进度显示:


  由于 `cp` 本身无法直接显示进度,可以先将目录打包成 `tar` 文件流,并使用 `pv` 来显示进度,然后解压到目标目录:


  ```bash

  tar cf - zhanglei | pv | tar xf - -C /mnt/lenovo/export

  ```


  解释:

  - `tar cf - zhanglei`:将 `zhanglei` 目录打包成 `tar` 文件流,`-` 表示输出到标准输出。

  - `pv`:显示通过管道传输的数据流量。

  - `tar xf - -C /mnt/lenovo/export`:从标准输入中解压到目标目录。


### 方法 3:使用 `cp` 的 `-v` 选项

虽然 `cp` 本身没有显示百分比进度的选项,但你可以使用 `-v` (verbose,详细模式)显示正在复制的文件。虽然它不会显示进度条或百分比,但可以看到每个文件的复制过程。


```bash

cp -rv zhanglei /mnt/lenovo/export

```


解释:

- `-r`:递归复制目录及其子目录。

- `-v`:显示详细信息,列出正在复制的文件。


### 总结

- 使用 `rsync --progress` 是最简单的方法,它直接显示进度条。

- `cp` 结合 `pv` 通过 `tar` 命令也可以显示进度条。

- `cp -v` 可以显示复制过程中每个文件的名称,但没有具体的进度条或百分比。