Ubuntu服务器死机情况下复制文件或文件夹到移动硬盘
Notes:
Ubuntu版本:18.04.5 LTS
外设:鼠标可移动,但点击无反应,键盘无反应。
程序:shell
中能看到程序正常运行。
PS:
网上存在很多现成的各种教程,但是制作情况层次不齐,我结合自身所遇到的实际情况,进行了一些整合和补充,希望对大家有所帮助。
解决方法
1、挂载移动硬盘
文件系统与目录树结合的动作我们成为挂载
挂载点一定是目录,此目录为文件系统的入口
1.1、插入移动硬盘
1.2、查看磁盘
在Terminal
中输入以下命令查看移动硬盘路径,比如/dev/sdb1
。
sudo fdisk -l
会显示所有的系统磁盘和移动硬盘,移动硬盘信息会在最后显示,如下所示。
设备 | 启动 | 起点 | 末尾 | 扇区 | 大小 | Id | 类型 |
---|---|---|---|---|---|---|---|
/dev/sdb1 | 2048 | 1953521663 | 1953519616 | 931.5G | 7 | HPFS/NTFS/exFAT |
1.3、创建用于挂载的目录,更改权限,挂载
使用mkdir
命令创建一个用于挂载移动硬盘的本地目录,挂载后该目录与移动硬盘本身是同步的
sudo mkdir /media/temp
使用chmod
命令来改变新建目录的权限
sudo chmod 755 /media/temp
将这个目录的权限改成与自己账户的权限一样
使用mount
命令挂载硬盘
sudo mount -o rw /dev/sdb1 /media/temp
-o 指定挂载文件系统时的选项
rw 表示以读写权限挂载
ro 表示以只读权限挂载
挂载时出现错误
Mount is denied because the NTFS volume is already exclusively opend.The volume may be already mounted, or another software may use it which could be identified for example by the help of the ‘fuser’ command.
Notes:
挂载时出现的很多错误,都可以用此方法解决,可以尝试一下。
查看占用外接存储的进程PID
sudo fuser -m -u /dec/sdb1
杀死这个进程
sudo kill 2358
然后重新挂载
sudo mount -o -rw /dev/sdb1 /media/temp
2、复制文件或文件夹
2.1 复制文件
使用cp
命令复制单个文件到用于挂载的目录。例如复制/lib/document
文件
cp /lib/document /media/temp
2.2 复制文件夹
复制目录且该目录含有子目录,使用-r
属性进行递归复制,递归复制将拷贝目标目录下的所有文件以及子目录,例如复制/lib目录:
cp -r /lib /media/temp
语法: cp [选项] 源文件或目录 目标文件或目录
说明:该命令把指定的源文件复制到目标文件或把多个源文件复制到目标目录中。
该命令的各选项含义如下:
- a 该选项通常在拷贝目录时使用。它保留链接、文件属性,并递归地拷贝目录,其作用等于dpR选项的组合。
- d 拷贝时保留链接。
- f 删除已经存在的目标文件而不提示。
- i 和f选项相反,在覆盖目标文件之前将给出提示要求用户确认。回答y时目标文件将被覆盖,是交互式拷贝。
- p 此时cp除复制源文件的内容外,还将把其修改时间和访问权限也复制到新文件中。
- r 若给出的源文件是一目录文件,此时cp将递归复制该目录下所有的子目录和文件。此时目标文件必须为一个目录名。
- l 不作拷贝,只是链接文件。
Linux操作系统频繁的存取文件就会导致buff和cache占用过高
查看buff/cache使用状况命令
top
第 4/5 行显示内存和交换空间使用状况
KiB Mem | 13159857+total | 19415332 free | 10821932+used | 3963924 buff/cache |
---|---|---|---|---|
KiB Swap | 2097148 total | 2097148 free | 0 used | 21809236 avail Mem |
若buff/cache占用过高,导致内存占用过高,系统会占用交换空间swap
,交换空间swap
占用过高,系统默认会杀死占用内存最高的进程PID。
清理buff/cache缓存方法
先执行命令:
sync
执行sync命令是为了确保文件系统的完整性,手动执行sync命令,将所有未写的系统缓冲区写到磁盘中,包含已修改的 i-node、已延迟的块 I/O 和读写映射文件。
再执行命令:
echo 3 > /proc/sys/vm/drop_caches
/proc是一个虚拟文件系统,通过对它的读写操作做为与kernel实体间进行通信的一种手段。Linux百科网通过修改/proc中的文件来对当前kernel的行为做出调整。所以,我们通过调整/proc/sys/vm/drop_caches来释放内存。
清理swap交换空间方法
先执行命令:
sync
再执行命令:
swapoff -a
关闭swap
最后执行命令:
swapon -a
打开swap
3、卸载移动硬盘
复制结束后,使用umount
命令卸载移动移动硬盘
sudo umount /dev/sdb1
或
sudo umount /media/temp
或
sudo umpount /dec/sdb1 /media/temp