Transfer data transmitted xargs twice in one line

tmp file contains:

database_1
database_2
database_3

I want to run the command "mysqldump DATABASE> database.sql && gzip database.sql" for each line in the above file.

I got to cat / tmp / database-list | xargs -L 1 mysqldump -u root -p

I suppose I want to know how to transfer data passed to xargs several times (and not just to the end)

EDIT: the following command will delete each database in its own .sql file and then gzip.

mysql -u root -pPASSWORD -B -e 'show databases' | sed -e '$!N; s/Database\n//' | xargs -L1 -I db mysqldump -u root -pPASSWORD -r db.backup.sql db; gzip *.sql
+3
source share
2 answers

&& -

cat file | xargs -L1 -I db mysqldump db > db.sql && cat file | xargs -L1 -I db gzip database.sql

, xargs. ,

cat file | xargs -L1 -I db mysqldump db > db.sql && cat file; gzip *.sql

.

+3

CPU ( ), GNU Parallel http://www.gnu.org/software/parallel/ :

mysql -u root -pPASSWORD -B -e 'show databases' \
| sed -e '$!N; s/Database\n//' \
| parallel -j+0 "mysqldump -u root -pPASSWORD {} | gzip > {}.backup.sql"

-j + 0 , .

+1

Source: https://habr.com/ru/post/1716845/


All Articles