我正在将一些数据 CD/DVD 复制到 ISO 文件中,以便以后在驱动器中不需要它们的情况下使用它们。
我在网上寻找程序,我发现了很多:
使用的cat复制介质:http://www.yolinux.com/TUTORIALS/LinuxTutorialCDBurn.html
cat /dev/sr0 > image.iso
Run Code Online (Sandbox Code Playgroud)dd这样做的用途(显然是最广泛使用的):http : //www.linuxjournal.com/content/archiving-cds-iso-commandline
dd if=/dev/cdrom bs=blocksize count=count of=/path/to/isoimage.iso
Run Code Online (Sandbox Code Playgroud)使用 justpv来完成此操作:有关man pv更多信息,请参阅此处,但这里有一个摘录:
Taking an image of a disk, skipping errors:
pv -EE /dev/sda > disk-image.img
Writing an image back to a disk:
pv disk-image.img > /dev/sda
Zeroing a disk:
pv < /dev/zero > /dev/sda
Run Code Online (Sandbox Code Playgroud)我不知道是不是所有的人都应该是等价的,虽然我测试了其中的一些(使用md5sum工具)和,至少,dd并且pv是不等价的。以下是md5sum使用每个过程的驱动器和生成的文件:
dd程序的md5: 71b676875b0194495060b38f35237c3c
光伏程序的md5: f3524d81fdeeef962b01e1d86e6acc04
编辑: …
如果myfile随着时间的推移而增加,我可以使用每秒获得行数
tail -f | pv -lr > /dev/null
Run Code Online (Sandbox Code Playgroud)
它提供瞬时速度,而不是平均速度。
我怎样才能得到平均速度(即速度函数v(t)在监控时间内的积分)。
我想从 USB 安装 Scientific Linux。我不知道为什么 unetbootin 不起作用,但我并不好奇:毕竟我是从 Windows 转到 Linux 来查看和学习底层程序的。我将我的 USB 驱动器格式化为 FAT32 并以 root 身份运行此命令:
# pv -tpreb /path/to/the/downloaded/iso | sudo dd of=/path/to/the/USB/device
Run Code Online (Sandbox Code Playgroud)
虽然它适用于 Live-CD 或网络安装(小于 1GB),但不适用于大约 4GB 的实际安装 DVD。如果有人能帮我解决这个问题,我将不胜感激。
考虑到它适用于较小的 .iso 文件这一事实,我想这与文件系统有关,对吗?我还有什么其他选择?
我目前正在安装 arch linux,当我尝试创建物理卷时,它给了我这个错误。
Can not use /dev/sda: device is partitioned
Run Code Online (Sandbox Code Playgroud)
这个错误是什么?我该如何消除它?
PS:我已经格式化了磁盘mkfs.ext4 /dev/sda
我能够使用以下命令备份驱动器。
pv -EE /dev/sda > disk-image.img
Run Code Online (Sandbox Code Playgroud)
这一切都很好,但现在我无法看到文件,除非我使用这个命令
pv disk-image.img > /dev/sda
Run Code Online (Sandbox Code Playgroud)
当然,这将数据写回磁盘,这不是我想要做的。我的问题是我能做些什么来挂载.img文件本身而不是仅仅写回磁盘?
我试过使用循环挂载,但它似乎抱怨无效的 NTFS。
$ mount -o loop disk-image.img
mount: disk-image.img: can't find in /etc/fstab.
$ mount -o loop disk-image.img /mnt/disk-image/
NTFS signature is missing.
Failed to mount '/dev/loop32': Invalid argument
The device '/dev/loop32' doesn't seem to have a valid NTFS.
Maybe the wrong device is used? Or the whole disk instead of a
partition (e.g. /dev/sda, not /dev/sda1)? Or the other way around?
Run Code Online (Sandbox Code Playgroud) 我曾经md5sum与pv检查是在同一个目录中的文件的4吉布:
md5sum dir/* | pv -s 4g | sort
Run Code Online (Sandbox Code Playgroud)
该命令在大约 28 秒内成功完成,但pv的输出全是错误的。这是在整个过程中显示的那种输出:
219 B 0:00:07 [ 125 B/s ] [> ] 0% ETA 1668:01:09:02
Run Code Online (Sandbox Code Playgroud)
没有-s 4g和也是这样| sort。我也尝试过使用不同的文件。
我试过使用pvwithcat并且输出很好,所以问题似乎是由md5sum.
我在一个大文件上运行 sed,并使用pv实用程序查看它读取输入和写入输出的速度。尽管 pv 显示 sed 在大约 5 秒内读取输入并写入输出,但 sed 又过了 20-30 秒才退出。为什么是这样?
这是我看到的输出:
pv -cN source input.txt | sed "24629045,24629162d" | pv -cN output > output.txt
source: 2.34GB 0:00:06 [ 388MB/s] [==========================================================================================================>] 100%
output: 2.34GB 0:00:05 [ 401MB/s] [ <=> ]
Run Code Online (Sandbox Code Playgroud) 我已经能够以两种方式定义物理卷 (LVM):
8e(Linux LVM 类型)分区,然后# pvcreate /dev/sdb1# pvcreate
/dev/sdc<-- 请注意缺少数字,因为没有任何分区。我的磁盘不是本地的,我使用两种方案:SAN 提供 LUN 和 VMware 提供不同系统中的磁盘。我们正在测试 LUN/vmware 磁盘在线调整大小,并且使用非分区磁盘定义的 PV 一切正常,但是对于分区层,无法使用parted或热调整它们的大小fdisk。
我的问题是:8e如果我可以使用原始磁盘来创建物理卷然后在线调整它们的大小,我为什么还要费心使用分区?
我想使用pv. 这个操作的输入的大小是预先知道的,但它的输出的大小不是。这迫使我将pv操作放在管道的左侧。
问题是长时间运行的命令会因为缓冲而立即消耗其全部输入。这有点类似于关闭管道中的缓冲问题,但在我的情况下,它是消耗操作缓慢,而不是生成一个,并且在这种情况下,另一个问题的答案似乎都不起作用。
这是一个演示问题的简单示例:
seq 20 | pv -l -s 20 | while read line; do sleep 1; done
20 0:00:00 [13.8k/s] [=====================================>] 100%
Run Code Online (Sandbox Code Playgroud)
进度条不是每秒更新一次,而是立即跳转到 100% 并在处理输入所需的整个 20 秒内保持在那里。pv如果行被逐行处理,则只能测量进度,但最后一个命令的整个输入似乎被读入缓冲区。
一个稍长一些的示例也演示了未知数量的输出行:
#! /bin/bash
limit=10
seq 20 | \
pv -l -s 20 | \
while read num
do
sleep 1
if [ $num -gt $limit ]
then
echo $num
fi
done
Run Code Online (Sandbox Code Playgroud)
有关解决方法的任何建议?谢谢!