![]() |
![]() |
![]() |
![]() |
![]() |
$ cat fileA | dd conv=ucase > fileB ←將 fileA 內小寫改大寫存入 fileB |
$ dd if=fileA of=fileB conv=lcase ←將 fileA 內大寫改小寫存入 fileB |
$ isoinfo -d -i /dev/cdrom ←讀取 CDROM 資訊 CD-ROM is in ISO 9660 format System id: LINUX Volume id: CentOS 7 x86_64 Volume set id: Publisher id: Data preparer id: Application id: GENISOIMAGE ISO 9660/HFS FILESYSTEM CREATOR (C) 1993 E.YOUNGDALE Copyright File id: Abstract File id: Bibliographic File id: Volume set size is: 1 Volume set sequence number is: 1 Logical block size is: 2048 Volume size is: 2182204 以下略 |
$ dd if=/dev/cdrom of=centos7.iso bs=2048 count=2182204 status=progress 4422363136 bytes (4.4 GB, 4.1 GiB) copied, 57 s, 77.6 MB/s 2182204+0 records in 2182204+0 records out 4469153792 bytes(4.5 GB,4.2 GiB)copied,60.7711 s, 73.5 MB/s |
上例參數〝bs〞為讀/寫 block 的大小,如沒指定〝bs〞 大小預設為 512 byte。(如有指定〝bs〞大小,此時會蓋過讀取 block 大小的參數〝ibs〞和寫入 block 大小的參數〝obs〞。)最後
最好加上 status=progress 參數,可以顯示轉換的進度。
同理 dd 也可用來把實體 partition 或軟碟等轉成映像檔
。
例:
# dd if=/dev/sda5 of=sda5.img ←將 partition 轉 image-file # dd if=/dev/fd0 of=floppy2.img ←將軟碟轉 image-file # dd if=floppy2.img of=/dev/fd0 ←還原 image-file 檔到軟碟 |
# dd if=/dev/sda of=/dev/sdb conv=noerror ←硬碟複製 # dd if=/dev/sda conv=noerror | gzip -c > win_xp.img.gz ←用壓縮的映像檔備份硬碟 # gzip -dc win_xp.img.gz | dd of=/dev/sda ←用 image-file 還原回硬碟 |
# dd if=/dev/sdb of=mbr bs=512 count=1 ←備份 MBR table # dd if=mbr of=/dev/sdb bs=512 count=1 ←還原 MBR table |
LBA 0 | Protective MBR | |
LBA 1 | Primary GPT Header | Primary GUID Partition Entry Array |
LBA 2 | GUID Partition entries 1~4 | |
LBA 3 | GUID Partition entries 5~8 | |
¦ | ¦ | |
LBA 32 | GUID Partition entries 121~124 | |
LBA 33 | GUID Partition entries 125~128 | |
LBA 34 | Partition 1 | Partition or unused area |
¦ | ¦ | |
LBA N | Partition 2 | |
# dd if=/dev/sdc of=gpt bs=512 count=34 ←備份 primary gpt table # dd if=gpt of=/dev/sdc bs=512 count=34 ←還原 primary gpt table |
# dd if=/dev/zero of=200M-image bs=200M count=1 ←產生一個 200M 的內容是空的映像檔 # mkfs 200M-image ←格式化此映像檔 mke2fs 1.40.2 (12-Jul-2007) 200M-image is not a block special device. ←會出現此檔非〝block device〞(儲存裝置)的警告 Proceed anyway? (y,n) y ←不管警告按<y>繼續格式化 # mount -t ext2 -o loop 200M-image /mnt ←掛載此虛擬 partition |
# dd if=/dev/zero bs=1024 count=1000000 of=1G-file ←測試寫的速度(block=1k 大小為 1G) # dd if=1G-file bs=1024 of=/dev/null ←測試讀的速度 |
# mount -v -t ext2 -o loop 200M-image /mnt ←mount 時加入選項〝-v〞 mount: going to use the loop device /dev/loop0 ←使用 loop device ?? /root/200M-image on /mnt type ext2 (rw,loop=/dev/loop0) |
# losetup /dev/loop0 200M-image ←將映像檔指定給虛擬設備檔〝/dev/loop0〞 # mount -t ext2 /dev/loop0 /mnt ←掛載〝/dev/loop0〞 |
# losetup -a ←掃描使用了那些 loop-device /dev/loop0: [0805]:261784 (disk-image) ←〝/dev/loop0〞使用中 # losetup -fv part-image ←自動為檔案〝part-image〞找下一個沒使用的 loop-device Loop device is /dev/loop1 ←自動找到〝/dev/loop1〞 |
# dd if=/dev/zero of=disk-image bs=100M count=1 ←產生 100M 空的映像檔 # losetup /dev/loop0 disk-image ←將映像檔模擬成硬碟 partition |
# fdisk -l disk-image ←列出 image-file 的 partition Device Boot Start End Blocks Id System disk-image1 1 320 20464 c W95 FAT32 (LBA) disk-image2 321 800 30720 83 Linux disk-image3 801 1600 51200 82 Linux swap / Solaris |
# parted disk-image unit B print ←例出 partition 起始 byte Number Start End Size Type File system Flags 1 16384B 20971519B 20955136B primary lba 2 20971520B 52428799B 31457280B primary 3 52428800B 104857599B 52428800B primary |
# losetup -o 16384 /dev/loop0 disk-image ←〝/dev/loop0〞 對應 partition1 # losetup -o 20971520 /dev/loop1 disk-image ←〝/dev/loop1〞 對應 partition2 # losetup -o 52428800 /dev/loop2 disk-image ←〝/dev/loop2〞 對應 partition3 |
# losetup /dev/loop0 disk-image ←以〝/dev/loop0〞 當 offset 基準 # losetup -o 16384 /dev/loop1 /dev/loop0 ←〝/dev/loop1〞 對應 partition1 # losetup -o 20971520 /dev/loop2 /dev/loop0 ←〝/dev/loop2〞 對應 partition2 # losetup -o 52428800 /dev/loop3 /dev/loop0 ←〝/dev/loop3〞 對應 partition3 |
# losetup /dev/loop0 disk-image ←以〝/dev/loop0〞 當 offset 基準 # mount -o loop,offset=16384 /dev/loop0 /mnt/disk1 ←mount 時 offset # mount -o loop,offset=20971520 /dev/loop0 /mnt/disk2 # mount -o loop,offset=52428800 /dev/loop0 /mnt/disk3 |
# fdisk -lu disk-image ←列出 partition 起始 sector Units = sectors of 1 * 512 = 512 bytes ←一個 sector =512 bytes Device Boot Start End Blocks Id System disk-image1 32 40959 20464 c W95 FAT32 (LBA) disk-image2 40960 102399 30720 83 Linux disk-image3 102400 204799 51200 82 Linux swap / Solaris |
# kpartx -av disk-image add map loop0p1 : 0 30688 linear /dev/loop0 32 ←partition 1 映射到 loop0p1 add map loop0p2 : 0 51200 linear /dev/loop0 30720 ←partition 2 映射到 loop0p2 add map loop0p5 : 0 81888 linear /dev/loop0 81952 ←partition 2 映射到 loop0p5 add map loop0p6 : 0 40928 linear /dev/loop0 163872 ←partition 2 映射到 loop0p6 |
# kpartx -av disk-image # ls /dev/mapper/loop* ←確認映射檔檔名 /dev/mapper/loop0p1 /dev/mapper/loop0p5 /dev/mapper/loop0p2 /dev/mapper/loop0p6 # mkfs -j /dev/mapper/loop0p1 ←format partition #1 # mount /dev/mapper/loop0p5 /media ←mount partition #5 |
系統記憶體 | 建議 swap 大小 | 如有休眠功能,建議 swap 大小 |
< 2GB | 二倍系統記憶體大小 | 三倍系統記憶體大小 |
2GB-8GB | 等於系統記憶體大小 | 二倍系統記憶體大小 |
8GB-64GB | 系統記憶體大小 | 1.5倍系統記憶體大小 |
>64GB | 4G | 4G |
# swapon -s ←列出 swap 使用情形 Filename Type Size Used Priority /dev/sda3 partition 1020116 1088 -1 |
# cat /etc/fstab | grep 'swap' LABEL=SWAP-sda3 swap swap defaults 0 0 |
# swapon -a ←根據〝/etc/fstab〞中對 swap-partiton 設定來啟用 swap # swapon /dev/sdb3 ←裝置〝/dev/sdb3〞為 swap-partiton 並啟用 # swapon -L SWAP-sda3 ←標籤〝SWAP-sda3〞為 swap-partiton 並啟用 |
# swapoff /dev/sdb3 ←禁能裝置〝/dev/sdb3〞的 swap-partiton |
# dd if=/dev/zero of=/mnt/512MiB_swap bs=512M count=1 ←產生一個 512M 的 swap-file |
# chmod 600 /mnt/512MiB_swap ←更改其權限為〝rw-------〞 # mkswap /mnt/512MiB_swap ←格式化為 swap # swapon /mnt/512MiB_swap ←啟用 swap # cat /proc/swaps ←驗證看 swap 有無啟用 Filename Type Size Used Priority /mnt/512MiB_swap file 524280 0 -1 |
# cat /etc/fstab | grep 'swap' /mnt/512MiB_swap swap swap defaults 0 0 |
# cat /proc/sys/vm/swappiness ←顯示 swappiness 值 60 |
# cat /etc/sysctl.conf | grep 'swappiness' vm.swappiness=30 ←此行設〝swappiness〞=30 |