split
命令和 -b
选项:split -b 1024m file.tar.gz
使用 @Joshua 的回答,可以在 Windows 计算机上重新组装它。
copy /b file1 + file2 + file3 + file4 filetogether
编辑:如下方评论中@Charlie所述,你可能需要明确设置前缀,因为否则它将使用x
,这可能会令人困惑。
split -b 1024m "file.tar.gz" "file.tar.gz.part-"
// Creates files: file.tar.gz.part-aa, file.tar.gz.part-ab, file.tar.gz.part-ac, ...
编辑: 因为问题已关闭且最有效的解决方案与这个答案的内容非常接近,所以对帖子进行了编辑。
# create archives
$ tar cz my_large_file_1 my_large_file_2 | split -b 1024MiB - myfiles_split.tgz_
# uncompress
$ cat myfiles_split.tgz_* | tar xz
这个解决方案避免了在(解)压缩过程中使用中间大文件的需要。使用tar -C选项可用于为结果文件使用不同的目录。顺便提一下,如果归档仅由单个文件组成,则可以避免使用tar,仅使用gzip:
# create archives
$ gzip -c my_large_file | split -b 1024MiB - myfile_split.gz_
# uncompress
$ cat myfile_split.gz_* | gunzip -c > my_large_file
对于Windows,您可以下载移植版本的相同命令或使用Cygwin。
cat
来重新组装文件。在 Windows 上,你可以使用 copy /b file1 + file2 + etc..
,然后将其复制回 Linux,tar 可以读取重新组装的 tarball。我刚试过了。 - Engineer2021--numeric-suffixes
:使用数字后缀而不是字母。 - Dr. Jan-Philip Gehrckefile=myfile.tar.gz
,然后跟随 split -b 1024m $file ${file}-part-
。重新组装使用 cat ${file}-part-* > $file
- Sebastian Müller如果你在Linux上分割文件,仍然可以在Windows上重新组装。
copy /b file1 + file2 + file3 + file4 filetogether
copy /b file* filetogether
-- http://support.microsoft.com/kb/71161 - eug测试代码,首先创建一个单一的归档文件,然后将其拆分:
gzip -c file.orig > file.gz
CHUNKSIZE=1073741824
PARTCNT=$[$(stat -c%s file.gz) / $CHUNKSIZE]
# the remainder is taken care of, for example for
# 1 GiB + 1 bytes PARTCNT is 1 and seq 0 $PARTCNT covers
# all of file
for n in `seq 0 $PARTCNT`
do
dd if=file.gz of=part.$n bs=$CHUNKSIZE skip=$n count=1
done
这种变体省略了创建单个归档文件的步骤,直接进入创建多个部分的步骤:
gzip -c file.orig |
( CHUNKSIZE=1073741824;
i=0;
while true; do
i=$[i+1];
head -c "$CHUNKSIZE" > "part.$i";
[ "$CHUNKSIZE" -eq $(stat -c%s "part.$i") ] || break;
done; )
在这个变体中,如果存档文件的大小可以被$CHUNKSIZE
整除,则最后一个部分文件的文件大小将为0字节。
split
已经做的事情了。 - ephemient-v200m
选项解决了我的问题。但后来我回头测试了你的方法,发现了我的错误 :D - m3nda