目前我通过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脚本。
答案 0 :(得分:4)
最后我自己做了这件事,可以做到!
此处$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
,而其强度是其原始字节复制行为。