我刚刚尝试在运行 Debian 的 Readynas 服务器上运行一个简单的 shell 脚本,但该split
命令似乎不可用。
这是一个我不能过多摆弄的服务器,所以如果有一种方法可以split
在不破坏其他原生 ReadyNAS 功能的情况下运行,我会非常高兴。
谢谢
答案1
split
是一个标准实用程序,包含在coreutils
包裹。该软件包具有“必需”优先级(并被标记为“必需”),因此正常的 Debian 安装都会有它。
我猜你的服务器正在运行忙碌盒公用事业。 BusyBox 是一套实用程序,专为磁盘空间或内存较少的系统而设计。它的许多功能都是可选的,Debian 的普通 BusyBox 软件包不包含该split
实用程序(大概是因为它不经常使用)。
split
您可以使用该head
实用程序和一些 shell 编程来模拟 的一些用法。这是一个快速而肮脏的脚本,用于将输入分割成固定大小的块:
#!/bin/sh
i=1000000001 # Below we'll strip away the leading 1; this is
# a trick to have leading zeroes in the file names.
prefix=$1 # The files will be called ${prefix}000000001, etc.
chunk_size=$2 # in bytes, or 42k or 42m for kB and MB respectively
while
head -q -c "$chunk_size" >"$prefix${i#1}"
[ -s "$prefix${i#1}" ] # Stop when we make an empty chunk.
do
i=$((i+1))
done
rm "$prefix${i#1}" # Remove the last, zero-sized chunk.
将该脚本存储为simple_split
.使用示例:
tar -cf - /big/dir | simple_split foo.tar- 1m
此命令创建 1MB 大小的文件,称为foo.tar-000000001
、foo.tar-000000002
等。您可以使用cat
;来组装它们。请注意,由于数字的固定宽度格式,文件按其名称的词汇顺序排序。
cat foo.tar-????????? | tar -tf -