标题一点都不好,但这里有一个cat结果的例子:
/var/oracle/oradata/DB11G/system01.dbf
/var/oracle/oradata/DB11G/sysaux01.dbf
/var/oracle/oradata/DB11G/undotbs01.dbf
/var/oracle/oradata/DB11G/users01.dbf
/var/oracle/oradata/DB11G/example01.dbf
/var/oracle/oradata/jabba/jabba01.dbf
/var/oracle/oradata/DB11G/control01.ctl
/var/oracle/flash_recovery_area/DB11G/control02.ctl
/var/oracle/oradata/DB11G/redo03.log
/var/oracle/oradata/DB11G/redo02.log
/var/oracle/oradata/DB11G/redo01.log
cat命令提供了这个文件的路径
我需要将这些文件压缩成tar.gz
我该怎么做?
答案 0 :(得分:-2)
作为一种简单的解决方法,如果您的tar版本不支持--files-from
选项,则可以使用tr
生成文件命令行。
假设:
$ cat files.txt
/var/oracle/oradata/DB11G/system01.dbf
/var/oracle/oradata/DB11G/sysaux01.dbf
/var/oracle/oradata/DB11G/undotbs01.dbf
/var/oracle/oradata/DB11G/users01.dbf
/var/oracle/oradata/DB11G/example01.dbf
/var/oracle/oradata/jabba/jabba01.dbf
/var/oracle/oradata/DB11G/control01.ctl
/var/oracle/flash_recovery_area/DB11G/control02.ctl
/var/oracle/oradata/DB11G/redo03.log
/var/oracle/oradata/DB11G/redo02.log
/var/oracle/oradata/DB11G/redo01.log
你可以这样做:
$ cat files.txt | tr '\n' ' '
/var/oracle/oradata/DB11G/system01.dbf /var/oracle/oradata/DB11G/sysaux01.dbf /var/oracle/oradata/DB11G/undotbs01.dbf /var/oracle/oradata/DB11G/users01.dbf /var/oracle/oradata/DB11G/example01.dbf /var/oracle/oradata/jabba/jabba01.dbf /var/oracle/oradata/DB11G/control01.ctl /var/oracle/flash_recovery_area/DB11G/control02.ctl /var/oracle/oradata/DB11G/redo03.log /var/oracle/oradata/DB11G/redo02.log /var/oracle/oradata/DB11G/redo01.log
然后在tar命令行中使用它。
大多数tar实现(我相信)也不会在文件列表中阻塞\n
,因此您可以直接执行此操作:
$ tar -c $(cat files.txt)
或尝试:
$ tar -c $(cat files.txt | tr '\n' ' ')
当然,如果你的tar支持--files-from
,请使用它。