谁能解释一下如何在linux命令中使用">“和"|”,并将这三行代码转换成一行代码?
mysqldump --user=*** --password=*** $db --single-transaction -R > ${db}-$(date +%m-%d-%y).sql
tar -cf ${db}-$(date +%m-%d-%y).sql.tar ${db}-$(date +%m-%d-%y).sql
gzip ${db}-$(date +%m-%d-%y).sql.tar
rm ${db}-$(date +%m-%d-%y).sql (after conversion I guess this line will be useless)发布于 2011-10-31 15:13:12
GNU tar程序本身可以完成通常由gzip完成的压缩。您可以使用-z标志来启用此功能。因此,可以将tar和gzip组合成:
tar -zcf ${db}-$(date +%m-%d-%y).sql.tar.gz ${db}-$(date +%m-%d-%y).sql让tar从标准输入中读取以进行归档并不是一项简单的任务,但在这种情况下,我会质疑它的必要性。
tar的目的是能够将大量文件打包到单个归档文件中,但是,由于它只是您正在处理的一个文件(来自mysqldump的输出流),您不需要将其tar起来,您只需将其直接传输到gzip本身:
mysqldump blah blah | gzip > ${db}-$(date +%m-%d-%y).sql.gz这是因为如果您不给gzip提供任何文件名,它会将标准输入压缩为标准输出。
这消除了在压缩过程中对任何(可能非常大的)临时文件的需要。
发布于 2011-10-31 15:23:36
您可以使用下一个脚本:
#!/bin/sh
USER="***"
PASS="***"
DB="***"
mysqldump --user=$USER --password=$PASS $DB --single-transaction -R | gzip > ${DB}-$(date +%m-%d-%y).sql.gz你可以在这里了解更多关于"|“- http://en.wikipedia.org/wiki/Pipeline_(Unix的信息。我可以说,这种结构将mysqldump命令的输出移动到gzip命令的标准输入,所以这就像是通过管道将一个命令的输出与另一个命令的输入连接起来。
发布于 2011-10-31 15:44:43
我不明白使用tar的意义:您只有一个文件,为了进行压缩,您可以调用gzip expl显式。Tar用于将多个文件归档/打包为一个文件。
您的cammandline应该是( dump命令是短的,但我猜您会得到它):
mysqldump .... | gzip > filename.sql.gzhttps://stackoverflow.com/questions/7950794
复制相似问题