Linux其他常见压缩备份工具 - dd,cpio
dd
dd 可以读取磁碟装置的内容(几乎是直接读取磁区"sector"),然后将整个装置备份成一个文件呢!真的是相当的好用啊~ dd 的用途有很多啦~但是我们仅讲一些比较重要的选项,如下:
[root@www ~]# dd if="input_file" of="output_file" bs="block_size" \ > count="number" 选项与参数: if :就是 input file 罗~也可以是装置喔! of :就是 output file 喔~也可以是装置; bs :规划的一个 block 的大小,若未指定则默认是 512 bytes(一个 sector 的大小) count:多少个 bs 的意思。 范例一:将 /etc/passwd 备份到 /tmp/passwd.back 当中 [root@www ~]# dd if=/etc/passwd of=/tmp/passwd.back 3+1 records in 3+1 records out 1945 bytes (1.9 kB) copied, 0.000332893 seconds, 5.8 MB/s [root@www ~]# ll /etc/passwd /tmp/passwd.back -rw-r--r-- 1 root root 1945 Sep 29 02:21 /etc/passwd -rw-r--r-- 1 root root 1945 Dec 17 18:09 /tmp/passwd.back # 仔细的看一下,我的 /etc/passwd 文件大小为 1945 bytes,因为我没有配置 bs , # 所以默认是 512 bytes 为一个单位,因此,上面那个 3+1 表示有 3 个完整的 # 512 bytes,以及未满 512 bytes 的另一个 block 的意思啦! # 事实上,感觉好像是 cp 这个命令啦~ 范例二:将自己的磁碟之第一个磁区备份下来 [root@www ~]# dd if=/dev/hdc of=/tmp/mbr.back bs=512 count=1 1+0 records in 1+0 records out 512 bytes (512 B) copied, 0.0104586 seconds, 49.0 kB/s # 第一个磁区内含有 MBR 与 partition table ,透过这个动作, # 我们可以一口气将这个磁碟的 MBR 与 partition table 进行备份哩! 范例三:找出你系统最小的那个分割槽,并且将他备份下来: [root@www ~]# df -h Filesystem Size Used Avail Use% Mounted on /dev/hdc2 9.5G 3.9G 5.1G 44% / /dev/hdc3 4.8G 651M 3.9G 15% /home /dev/hdc1 99M 21M 73M 23% /boot <==就捉他好了! [root@www ~]# dd if=/dev/hdc1 of=/tmp/boot.whole.disk 208782+0 records in 208782+0 records out 106896384 bytes (107 MB) copied, 6.24721 seconds, 17.1 MB/s [root@www ~]# ll -h /tmp/boot.whole.disk -rw-r--r-- 1 root root 102M Dec 17 18:14 /tmp/boot.whole.disk # 等於是将整个 /dev/hdc1 通通捉下来的意思~如果要还原呢?就反向回去! # dd if=/tmp/boot.whole.disk of=/dev/hdc1 即可!非常简单吧! # 简单的说,如果想要整个硬盘备份的话,就类似 Norton 的 ghost 软件一般, # 由 disk 到 disk ,嘿嘿~利用 dd 就可以啦~厉害厉害! |
例题:
你想要将你的 /dev/hdc1 进行完整的复制到另一个 partition 上,请使用你的系统上面未分割完毕的容量再创建一个与 /dev/hdc1 差不多大小的分割槽 (只能比 /dev/hdc1 大,不能比他小!),然后将之进行完整的复制 (包括需要复制 boot sector 的区块)。
答:
由於需要复制 boot sector 的区块,所以使用 cp 或者是 tar 这种命令是无法达成需求的! 此时那个 dd 就派的上用场了。你可以这样做:
# 1. 先进行分割的动作 [root@www ~]# fdisk -l /dev/hdc Device Boot Start End Blocks Id System /dev/hdc1 * 1 13 104391 83 Linux # 上面鸟哥仅撷取重要的数据而已!我们可以看到 /dev/hdc1 仅有 13 个磁柱 [root@www ~]# fdisk /dev/hdc Command (m for help): n First cylinder (2354-5005, default 2354): 这里按 enter Using default value 2354 Last cylinder or +size or +sizeM or +sizeK (2354-5005, default 5005): 2366 Command (m for help): p Device Boot Start End Blocks Id System /dev/hdc9 2354 2366 104391 83 Linux Command (m for help): w # 为什么要使用 2366 呢?因为 /dev/hdc1 使用 13 个磁柱,因此新的 partition # 我们也给她 13 个磁柱,因此 2354 + 13 -1 = 2366 罗! [root@www ~]# partprobe # 2. 不需要格式化,直接进行 sector 表面的复制! [root@www ~]# dd if=/dev/hdc1 of=/dev/hdc9 208782+0 records in 208782+0 records out 106896384 bytes (107 MB) copied, 16.8797 seconds, 6.3 MB/s [root@www ~]# mount /dev/hdc9 /mnt [root@www ~]# df Filesystem 1K-blocks Used Available Use% Mounted on /dev/hdc1 101086 21408 74459 23% /boot /dev/hdc9 101086 21408 74459 23% /mnt # 这两个玩意儿会『一模一样』喔! [root@www ~]# umount /mnt |
cpio
[root@www ~]# cpio -ovcB > [file|device] <==备份 [root@www ~]# cpio -ivcdu < [file|device] <==还原 [root@www ~]# cpio -ivct < [file|device] <==察看 备份会使用到的选项与参数: -o :将数据 copy 输出到文件或装置上 -B :让默认的 Blocks 可以添加至 5120 bytes ,默认是 512 bytes ! 这样的好处是可以让大文件的储存速度加快(请参考 i-nodes 的观念) 还原会使用到的选项与参数: -i :将数据自文件或装置 copy 出来系统当中 -d :自动创建目录!使用 cpio 所备份的数据内容不见得会在同一层目录中,因此我们 必须要让 cpio 在还原时可以创建新目录,此时就得要 -d 选项的帮助! -u :自动的将较新的文件覆盖较旧的文件! -t :需配合 -i 选项,可用在"察看"以 cpio 创建的文件或装置的内容 一些可共享的选项与参数: -v :让储存的过程中文件名称可以在萤幕上显示 -c :一种较新的 portable format 方式储存 |
范例:找出 /boot 底下的所有文件,然后将他备份到 /tmp/boot.cpio 去! [root@www ~]# find /boot -print /boot /boot/message /boot/initrd-2.6.18-128.el5.img ....以下省略.... # 透过这个 find 我们可以找到 /boot 底下应该要存在的档名!包括文件与目录 [root@www ~]# find /boot | cpio -ocvB > /tmp/boot.cpio [root@www ~]# ll -h /tmp/boot.cpio -rw-r--r-- 1 root root 16M Dec 17 23:30 /tmp/boot.cpio |
范例:将刚刚的文件给他在 /root/ 目录下解开 [root@www ~]# cpio -idvc < /tmp/boot.cpio [root@www ~]# ll /root/boot # 你可以自行比较一下 /root/boot 与 /boot 的内容是否一模一样! |
其实系统里面已经含有一个使用 cpio 创建的文件喔!那就是 /boot/initrd-xxx 这个文件啦!
# 1. 我们先来看看该文件是属於什么文件格式,然后再加以处理: [root@www ~]# file /boot/initrd-2.6.18-128.el5.img /boot/initrd-2.6.18-128.el5.img: gzip compressed data, ... # 唔!看起来似乎是使用 gzip 进行压缩过~那如何处理呢? # 2. 透过更名,将该文件添加扩展名,然后予以解压缩看看: [root@www ~]# mkdir initrd [root@www ~]# cd initrd [root@www initrd]# cp /boot/initrd-2.6.18-128.el5.img initrd.img.gz [root@www initrd]# gzip -d initrd.img.gz [root@www initrd]# ll -rw------- 1 root root 5408768 Dec 17 23:53 initrd.img [root@www initrd]# file initrd.img initrd.img: ASCII cpio archive (SVR4 with no CRC) # 嘿嘿!露出马脚了吧!确实是 cpio 的文件档喔! # 3. 开始使用 cpio 解开此文件: [root@www initrd]# cpio -iduvc < initrd.img sbin init sysroot ....以下省略.... # 瞧!这样就将这个文件解开罗!这样了解乎? |
Linux其他常见压缩备份工具 - dd,cpio的更多相关文章
- Linux中常用压缩打包工具
Linux中常用压缩打包工具 压缩打包是常用的功能,在linux中目前常用的压缩工具有gzip,bzip2以及后起之秀xz.本文将介绍如下的工具常见压缩.解压缩工具以及打包工具tar. gzip2 直 ...
- linux下的数据备份工具rsync讲解
linux下的数据备份工具 rsync(remote sync 远程同步) 名词解释: sync(Synchronize,即“同步”)为UNIX操作系统的标准系统调用,功能为将内核文件系统缓冲区的 ...
- 压缩工具和整盘备份工具dd
一.使用gzip压缩文件 gzip是GNU zip的缩写. [命令格式] gzip [option] filename [常用选项] c:压缩后将结果输出到标准输出,并保留原始文件. d:解压缩文件. ...
- [转]Linux/Unix系统镜像/备份/恢复 (dd 命令使用)
ref: http://blog.chinaunix.net/xmlrpc.php?r=blog/article&uid=22561912&id=156879 开源系统默认安装了一个d ...
- Linux基础学习-数据备份工具Rsync
数据备份工具rsync 作为一个系统管理员,数据备份是非常重要的,如果没有做好备份策略,磁盘损坏了,那么你的数据将全部丢失,所以在日常的维护工作中,一定要时刻牢记给数据做备份. rsync不仅可以可以 ...
- linux系统常见压缩命令
在linux环境中,压缩文件的扩展名基本是:*.tar,*.tar.gz,*.tgz,*.gz,*.Z,*.bz2 *.Z compress程序压缩的文件 *.gz gzip程序压缩的文件 *.bz2 ...
- linux中常见压缩文件格式
文件后缀名 说明 *.zip zip 程序打包压缩的文件 *.rar rar 程序压缩的文件 *.7z 7zip 程序压缩的文件 *.tar tar 程序打包,未压缩的文件 *.gz gzip 程序( ...
- Linux下文件压缩与打包
Linux常用压缩命令compresscompress压缩出来的文件的后缀是.Z,解压命令是ucompresscompress -c 文件 > 压缩后的文件名 ,选项-v显示压缩过程,选项-c的 ...
- 3.Linux 文件的压缩与打包
1.常用压缩打包命令 常用的压缩打包扩展名为如下: *.Z compress 程序压缩的文件,非常老旧了,不再细说 *.gz gzip 程序压缩的文件: *.bz2 bzip2 程序压缩的文件: *. ...
随机推荐
- Java基本语法-----java常量
1常量的概述 常量是指在程序运行过程中其值不能改变的量. 2常量类型 Java中常量的分类: 整数常量 : 所有整数 小数常量 : 所有小数 布尔常量 : 只有true和false 字符常量 :使用' ...
- Django 表单校验 表单字段设置 自定义表单校验规则
今天看到了一篇非常好的博文,拿来和大家分享一下. 内容包括了: 用户注册时输入数据的校验 使用widget进行字段设置 实现自定义的校验规则 参考自下面的这篇文章
- 一个iOS6系统bug+一个iOS7系统bug
先看实际工作中遇到的两个bug:(1)iPhone Qzone有一个导航栏背景随着页面滑动而渐变的体验,当页面滑动到一定距离时,会改变导航栏上title文本的颜色,但是有一个莫名其妙的bug,如下:
- 查看某一职责下对应的菜单&功能&请求
查看菜单&功能 SELECT res.RESPONSIBILITY_NAME 职责名称, menu.MENU_NAME 菜单编码, menu.USER_MENU_NAME 菜单名称, func ...
- gradle测试出现IllegalArgumentException
今天clone了一份代码,跑gradle test时出现failed,从report上来看是这个错误:IllegalArgumentException,具体如下: java.lang.IllegalA ...
- (九十)使用多个storyboard+代码实现控制器的分开管理
使用单个storyboard会使得项目难与管理,使用纯代码又会过于麻烦,因此如果能将二者结合起来,并且使用多个storyboard,会使得项目简单简单.方便许多. 下面以一个简单的视图关系为例,介绍多 ...
- Mybatis源码之Statement处理器PreparedStatementHandler(五)
PreparedStatementHandler就是调用PreparedStatement来执行SQL语句,这样在第一次执行sql语句时会进行预编译,在接下来执行相同的SQL语句时会提高数据库性能 源 ...
- 1017. Queueing at Bank (25) - priority_queuet
题目如下: Suppose a bank has K windows open for service. There is a yellow line in front of the windows ...
- UNIX环境高级编程——sigqueue、sigsuspend函数
一.sigqueue函数 功能:新的发送信号系统调用,主要是针对实时信号提出的支持信号带有参数,与函数sigaction()配合使用. int sigqueue(pid_t pid, int sig, ...
- C++ Primer 有感(标准库map类型)
map是键-值对的集合.map类型通常可以理解为关联数组:可以使用键作为下标获取一个值,正如内置数组一样.而关联的本质在于元素的值于某个特定的键相关联,而并非通过元素在数组中的位置获取. 1.map对 ...