【问题标题】:How to netcat multiple files without tar?如何在没有 tar 的情况下 netcat 多个文件?
【发布时间】:2013-05-17 17:05:27
【问题描述】:

目前我正在通过 telnet 来回传输文件,我想一次发送多个文件。

但是,我的目标平台(Blackfin 处理器)在其内核/busybox 配置(uClinux 发行版)中没有启用“tar”。

众所周知,正常的命令是:

nc -p 12345 -l | tar -x
tar -c * | nc 192.168.0.100 12345 # with x.100 the robot IP address

如何使用 netcat不使用 tar 发送多个文件?

请考虑到我无法在平台上轻松添加二进制文件。最好使用基本实用程序和/或 shell 脚本来完成。

【问题讨论】:

    标签: tar file-transfer netcat


    【解决方案1】:

    终于让自己做到了,可以做到!

    这里的$l>IP 192.168.0.10 代表您的机器。 $e> 是在没有 tar 的嵌入式设备上完成的,在我的例子中是一个机器人。它使用老式的dd,可以复制整个磁盘。

    $l> nc -p 12345 -l | dd obs=4K of=/tmp/file.jffs2
    $e> dd ibs=4K if=/dev/mtdblock2 | nc 192.168.0.10 12345
    

    就是这样,但是因为不是每个人都知道如何读取这种形式的文件系统,所以这是挂载它的方式:

    file /tmp/file.jffs2
      /tmp/file.jffs2: Linux jffs2 filesystem data little endian
    sudo su     #careful
    mknod /tmp/mtdblock0 b 31 0
    modprobe loop
    losetup /dev/loop0 /tmp/file.jffs2
    modprobe mtdblock
    modprobe block2mtd
    echo "/dev/loop0,128KiB" > /sys/module/block2mtd/parameters/block2mtd
    modprobe jffs2
    mkdir /media/robot
    mount -t jffs2 /tmp/mtdblock0 /media/robot
    Ctrl-D  #back as normal user
    

    是的,您需要环回设备,否则:

    sudo mount -t jffs2 /tmp/file.jffs2 /media/robot
      mount: /tmp/file.jffs2 is not a block device (maybe try `-o loop'?)
    

    从逻辑上讲,它是一个文件(字符),而不是块设备。我唯一不知道的是,是否存在dd 的语法,其中嵌入式设备上的命令只能选择要包含的文件系统的子集。我认为这不太可能,因为这需要dd 才能理解jffs2,而它的优势在于其原始字节复制行为。

    【讨论】:

      猜你喜欢
      • 2015-08-03
      • 1970-01-01
      • 1970-01-01
      • 2021-07-10
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2016-03-10
      • 2019-09-28
      相关资源
      最近更新 更多