Unix

將多個文件通過管道傳輸到一個 tar gz

  • November 5, 2014

我想呼叫 mysqldump 創建多個備份文件,然後將它們歸檔在一個 tar.gz 中。

我正在關注mysqldump部分的本教程:http: //dev.mensfeld.pl/2013/04/backup-mysql-dump-all-your-mysql-databases-in-separate-files/(最後,它呼叫mysqldump 為每個數據庫循環並一次創建一個文件)

我可以將所有文件保存在臨時目錄中,然後“然後”將它們放入存檔中,但是,**無論如何如何跳過這個不必要的臨時目錄部分?**我試圖了解命名管道,認為它們可能是我需要的,但是,並沒有真正理解它們。

您可以使用該-r標誌 tar 將文件附加到現有存檔。由於附加到空或不存在的存檔是合法的,因此您可以將循環指令修改為類似

$MYSQLDUMP --force --opt --user=$MYSQL_USER -p$MYSQL_PASSWORD --databases $db > "$BACKUP_DIR/mysql/$db"
tar rvf /path/to/tar.file "$BACKUP_DIR/mysql/$db" && rm "$BACKUP_DIR/mysql/$db"

該文件必須暫時存在,因為它需要在 tar 索引中有一個文件名以用於提取目的(如果您通過管道將所有文件發送到它,請考慮如何提取它們) - 但您不需要將它們全部收集在一起,然後將它們全部塗上焦油。

引用自:https://serverfault.com/questions/642127