| created_date | 2025-01-15 |
|---|
[TOC]
- 硬盘的最小存储单位: 扇区-Sector, 每个扇区储存512字节-相当于0.5KB.
- 文件存取的最小单位: 块-block, 操作系统读取硬盘的时候, 不会一个个扇区的读取,这样效率太低,而是一次性连续读取多个扇区, 即一次性读取一个块block。 块的大小, 最常见的是4KB, 即连续八个sector组成一个block.
- 文件存储在块中。
- 文件元信息存储在inode中。
- 每一个文件都有对应的inode。
- Unix/Linux系统内部不使用文件名,而使用inode号码来识别文件。
# stat 查看文件的inode信息
stat ${file}
# Links 代表链接数,即有多少文件名指向这个inode
# ln 文件链接
# 硬链接,这两个文件将指向同一个inode
ln ${old_file} ${new_file}
# 软链接,文件${new_file}将指向文件${old_file}的名称
ln -s ${old_file} ${new_file}- dd 指令用于处理磁盘设备文件
- 数据来源选择 if=/dev/zero
- 使用 /dev/urandom 生成随机数据,可能稍慢。
- 使用 /dev/zero 可生成零填充数据,速度更快。
- 使用特定内容进行填充 echo "Hello Filecoin!" > input_data.txt
- 输出路径 of=output.bin
- 其它参数
- 显示进度 status=progress
- 异步进行 oflag=dsync
- 块的大小 bs=1M
- 块的数量 count=N
- 在输出文件中跳过的块数量 seek=N
- 示范
- 创建文件 dd if=/dev/urandom of=urandom.bin bs=1G count=17 status=progress
- 备份磁盘分区 dd if=/dev/sda1 of=backup.img status=progress
# 本地快速拷贝文件夹
tar cvf – 源文件夹路径 | tar xvf – -C 目的文件夹路径# scp -i 指定密钥文件 -C 允许压缩 源文件 目的地址
scp -P22 home.tar 192.168.205.34:/home/home.tar
# -r 拷贝目录
# rsync支持在本地计算机与远程计算机之间,或者两个本地目录之间同步文件
rsync -P --rsh=ssh home.tar 192.168.205.34:/home/home.tar
rsync -P -e'ssh -p 22' home.tar 192.168.205.34:/home/home.tar
# -P 可以实现意外中断后,下次继续传。当于 --partial --progress
# -r 拷贝目录
# -a 参数可以替代-r,除了可以递归同步以外,还可以同步元信息(比如修改时间、权限等),从而做到增量同步
# --exclude='文件名' 排除某些文件或目录
# -e 指定协议
# --partial 允许恢复中断的传输
# --append 文件接着上次中断的地方,继续传输
# --append-verify 跟--append参数类似,但会对
传输完成后的文件进行一次校验。如果校验失败,将重新发送整个文件。非常影响传输速度。
# -z 同步时压缩数据
# -S 传输稀疏文件 sparse file
# --bwlimit=1024 # 单位为KB/s
# -x 指定传输时不能跨文件系统
# --inplace
# 通过ssh协议远程同步目录时的参数
# --append-verify -P -a -z -e'ssh -p 22'
# -P -a -z -e'ssh -p 22'
rsync -P -a -z -e'ssh -p 22' 192.168.205.34:/home/home ./- rsync 使用-a参数时,文件夹内的文件太多,可能会导致这个问题,例如当文件夹内含有8691137个文件时
No space left on device (28)
- 稀疏文件 sparse file
- 稀疏文件就是在文件中留有很多空余空间,留备将来插入数据使用。如果这些空余空间被ASCII码的NULL字符占据,并且这些空间相当大,那么,这个文件就被称为稀疏文件,而且,并不分配相应的磁盘块。
- Linux中常见的qcow2文件和raw文件,都是稀疏文件。
# 创建稀疏文件,将创建一个5MB大小的文件,但不在磁盘上存储数据(仅存储元数据)
spare_file_path=spare_file
# dd命令创建
dd of=${spare_file_path} bs=1k seek=5120 count=0
# truncate命令创建
truncate -s 5M sparse_file_name
# qemu-img命令创建
qemu-img create -f qcow2 ${spare_file_path}.qcow2 5M
# 查看稀疏文件的大小
qemu-img info ${spare_file_path}# 拷贝稀疏文件的几种方式 # 两台机器的文件系统必须相同,否则下面的指令无效
# 进行拷贝稀疏文件测试 稀疏文件大小:virtual size: 1.93 GiB, disk size: 860 MiB, 传输速度维持在11.27MB/s左右
# rsync传输
rsync -P -S -e'ssh -p 22' 0 10.10.1.42:~/ # 2m55.485s
# rsync压缩传输
rsync -P -S -z -e'ssh -p 22' 0 10.10.1.42:~/ # 0m46.092s # 显示的传输速度为 43.35MB/s,应该是由于压缩原因,实际上是传输大小减小了
rsync -P -S -z 0 10.10.1.42:~/ # 0m50.225s
# tar打包,rsync传输
tar Scvf 0.tar 0 && rsync -P -S -e'ssh -p 22' 0.tar 10.10.1.42:~/ && ssh 10.10.1.42 tar xvf ~/0.tar # 1m23.187s
# tar打包压缩,rsync传输
tar Sczvf 0.tar.gz 0 && rsync -P -S -e'ssh -p 22' 0.tar.gz 10.10.1.42:~/ && ssh 10.10.1.42 tar xzvf ~/0.tar.gz # 1m7.679s
# tar打包压缩, scp传输
tar Scjvf - 0 | ssh 10.10.1.42 tar xjvf - -C ./ # 1m41.213s
tar Sczvf - 0 | ssh 10.10.1.42 tar xzvf - -C ./ # 0m46.807s
# 最佳实践
time rsync -P -S -a -z -e'ssh -p 22' ./aa 10.10.3.76:/tank1/# 查看所有目录包含隐含目录的大小
du -sh * .[^.]*
# 只查看隐含目录的大小
du -sh .[!.]*
# 排除指定文件
--exclude="proc"
--exclude="data*"