我有一个压缩命令,我将其导入md5sum check命令:
tar zcvpf file.tar.gz file | xargs -I '{}' bash -c "test -f '{}' && md5sum '{}'" | tee file_mybackup.md5
我现在想将tar.gz文件拆分为100MB块。我可以通过以下方式做到这一点:
tar zcvpf - file | split -d -b 1M - file.tar.gz.
有没有办法管道tar命令的输出同时执行split命令和md5sum检查?我知道split不会输出到STDOUT,所以我无法从split命令输出到md5sum命令。 我试图使用命名管道:
mkfifo newpipe
tar zcvpf - file | tee newpipe | split -d -b 1M - file.tar.gz. &
cat newpipe | xargs -I '{}' bash -c "test -f '{}' && md5sum '{}'" | tee file_mybackup.md5
然而,这无法输出md5sum输出。任何帮助将不胜感激
答案 0 :(得分:0)
好的,我最终找到了解决方案
type="javax.sql.Datasource"
我将stdin重定向到inital tar命令中的split命令,同时将此tar的输出传递给xargs。希望这对其他人有帮助。
答案 1 :(得分:0)
你的命令:
tar zcvpf file.tar.gz file | xargs -I '{}' bash -c "test -f '{}' && md5sum '{}'" | tee file_mybackup.md5
...不再有效(在最小化驱动器读取方面)然后这个更简单的命令(即不需要xargs):
tar zcvpf file.tar.gz file && md5sum file | tee file_mybackup.md5
因为在这两种情况下,file
只读取tar
一次,md5sum
再次读取cat file | tee >(md5sum | sed 's/-/file/' > file_mybackup.md5) | gzip -c | split -d -b 1M - file.gz.
除非你想要实现的目标中缺少某些内容,否则最小化驱动器读取所需的命令是:
gzip
注意:由于您要归档单个文件而不是我刚刚使用tar
而不是public static class Facade
{
static SubsystemA a = new SubsystemA( );
static SubsystemB b = new SubsystemB( );
static SubsystemC c = new SubsystemC( );
public static void Operation1( ) {
Console.WriteLine("Operation 1\n" +
a.A1( ) +
a.A2( ) +
b.B1( ));
}
public static void Operation2( ) {
Console.WriteLine("Operation 2\n" +
b.B1( ) +
c.C1( ));
}
}
的目录。是的,这不存储文件权限,不适用于目录!那是一个要求吗?