博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
利用tar或dd在不同操作系统间传输文件的另类方法
阅读量:5739 次
发布时间:2019-06-18

本文共 1208 字,大约阅读时间需要 4 分钟。

在不同操作系统之间进行文件传送的方式有很多种。如果网络可通,可以使用FTP、SFTP、NFS、SAMBA(CIFS)、HTTP等方式进行传输;如果网络不通,则可以使用两个操作系统之间共同支持的文件系统进行传输,比如软盘、光盘或最常用的FAT文件系统等;还可以使用两个操作系统共同支持的备份设备进行传输,比如磁带备份(严格讲,也是基于共同支持的依赖于硬件的文件系统)。

利用tar或dd在不同操作系统间传输文件的另类方法
可现在我遇到的一个XENIX系统就麻烦得多了:网络不工作(可能是我不会,呵呵),mkdev dos也不支持,试图mount一个msdos文件系统也不成功,又没有磁带机等设备,数据量也很大,软盘备份也不太可靠。

这个系统已经很老了,客户已经报废了这套系统,但里面的数据希望能拷贝出来,迁移到新的系统上(新系统应该是现在主流的WINDOWS\LINUX或UNIX,传入文件都不是大问题)。

我接手时,遇到很多问题,系统无法启动,硬盘损坏等,后来虽然全部解决了(解决过程稍后有机会记录),但COPY文件真是为难了我了。

一个好的办法是,自己写个文件系统的解释程序(类似于驱动),这个方式会麻烦一些,同时需要对文件系统底层结构做下深入研究。这种做法我也做成功了,但毕竟适用性差,有点大材小用。先不讲这个,看另外的方法:利用所有操作系统对硬盘IO的兼容性,用dd或tar直接在祼设备上进行文件传输:

dd是一个向设备进行字节完整输入输出的程序。
tar是一个备份/打包/压缩程序。

为了操作方便,我在虚拟机下完成这个任务。

  • 1、将原数据硬盘挂接到新建的一个虚拟机环境下,在虚拟机环境下建一个flat硬盘(创建时即完全分配空间的硬盘,硬盘的大小应略大于导出数据总和),启动xenix系统(这个系统和硬件关系不大)。
  • 2、启动后执行mkdev hd对新硬盘自动mknod,分不分区无所谓。完成后,通过ls /dev/rhd*以及 fdisk -f /dev/rhdXXX获取新硬盘设备路径。
  • 3、进行数据迁移。
  • 第一种方法: 用dd if=要备份的文件 of=/dev/rhdXXX就可以把文件复制到/dev/rhdXXX这块硬盘上了,把这块硬盘挂到要导入数据的系统上,从硬盘(在虚拟机看来,实际上是外部操作系统下的一个文件)开头用WINHEX截取要备份文件大小成目标文件即可。
  • 第二种方式(可以导出大量文件): tar -cvf /dev/rhdXXX / (把/下所有的文件打包输出到/dev/rhdXXX设备上),然后操作同上,在另外的系统上截取数据即可(如果是在虚拟机里,可以直接用tar或RAR等文件解压vmdf文件,不需截取数据)
  • 第三种方式(tar与dd联合): tar -cvf - / | dd of=/dev/rhdXXX (利用管道操作,与第二种方式相同)

转载于:https://blog.51cto.com/sun510/2073512

你可能感兴趣的文章
人工智能还能干这些?这8种AI应用你可能意想不到
查看>>
实现Hyper-V 虚拟机在不同架构的处理器间迁移
查看>>
linux根目录下的文件解析
查看>>
简单使用saltstack
查看>>
针对web服务器容灾自动切换方案
查看>>
LTE学习笔记(一)——背景知识
查看>>
突破媒体转码效率壁垒 阿里云首推倍速转码
查看>>
容器存储中那些潜在的挑战和机遇
查看>>
程序员该懂一点儿KPI
查看>>
R语言的三种聚类方法
查看>>
55%受访企业将物联网战略视为有效竞争手段
查看>>
深入理解Python中的ThreadLocal变量(上)
查看>>
如果一切即服务,为什么需要数据中心?
查看>>
《游戏开发物理学(第2版)》一导读
查看>>
Erlang简史(翻译)
查看>>
深入实践Spring Boot2.4.2 节点和关系实体建模
查看>>
信息可视化的经典案例:伦敦地铁线路图
查看>>
10个巨大的科学难题需要大数据解决方案
查看>>
Setting Up a Kerberos server (with Debian/Ubuntu)
查看>>
用 ThreadLocal 管理用户session
查看>>