Linux 上的复制、备份与镜像

今天逛社区,偶尔发现有人询问大量小文件的移动复制与备份的问题,第一反应就是 cpio。因为以前备份 Gentoo 的时候,都是直接 cpio 来处理的,当然,tar、cp、dd 也可。至于 dump & restore 则由于文件系统适应性基本被放弃。

cp

cp 是常见的复制文件或目录的命令,是 copy 的缩写。譬如:

复制文件

cp /path/a /path/b

复制文件夹

cp -r /path/dir-a /path/dir-b

cp 的一些常见的参数:

详细的可以使用 man cp 来查看

tar

在 Linux 下发布产品时,最常使用的就是 tar 命令。她可以对档案进行打包备份操作。

一些常见的参数:

常见的打包命令

tar cvf /path/name.tar /path/name
tar cvjf /path/name.tar.bz2 /path/name
tar cvzf /path/name.tar.gz /path/name
tar cvJf /path/name.tar.xz /path/name
tar cvJf /path/name.tar.lzma /path/name

常见的解包命令

tar xvf /path/name.tar
tar xvjf /path/name.tar.bz2
tar xvzf /path/name.tar.gz
tar xvJf /path/name.tar.xz
tar xvJf /path/name.tar.lzma

详细命令可以使用 man tar 来查看

dd

dd 在 Linux 环境下,也是非常有用的一个命令,她可以拷贝一个文件时进行指定的转换,尽管我只是用她来制作 u 盘镜像和备份 mbr 信息。

一些常见的参数:

常见的命令

dd if=/dev/sdx of=/path/to/mbr bs=512 count=1       # 备份 mbr
dd if=/path/to/mbr of=/dev/sdx bs=512 count=1       # 恢复 mbr
dd if=/dev/zero of=/path/swap bs=1M count=1024      # 创建个 1024MB 的文件 swap
dd if=/path/to/image of=/dev/sdx bs=1M              # 制作 u 盘启动盘
dd if=/dev/cdrom of=/path/to/iso                    # 制作 cd 的 iso 镜像

详细使用方法可以 man dd

cpio

cpio 可以从 cpio、tar、pax、zip、jar、iso 等等格式的文件中存取档案,她是为备份而生的。

一些常用参数:

常见的使用场景

find /path/to/dir -print0 | cpio --null -oacvB > /path/to/name.cpio # o 模式,打包目录成 cpio 档案
find /. | cpio -oacvB > /path/to/system.cpio                        # o 模式,备份整个系统
cpio -ivt < /path/to/name.cpio                                      # i 模式,列出 name.cpio 的文件
cpio -idmuv < /path/to/name.cpio                                    # i 模式,还原 cpio 档案
find /path/to/dir -print0 | cpio --null -pvd /path/to/dir1          # p 模式,直接复制文件到新目录