/opt/mysql/bin/mysqldump -udbuser -pAdmin@123 -h192.167.93.44 -P32083 --single-transaction --set-gtid-purged=OFF --databases mohwscdrdb mohwsecsdb moresourcelifecycledb moorderdb movdcservicedb > ./backup.sql 2>&1 | grep -v "Warning"
Это было выполнено, как я думал, без "Предупреждения: использование пароля.." blablabla.
Но когда я исполняю:
/opt/mysql/bin/mysql -udbuser -pAdmin@123 -h192.167.93.44 -P32083 < ./backup.sql 2>&1 | grep -v "Warning"
для того, чтобы вернуть файл sql без предупреждения, он не работает, говоря:
/' at line 1
Я думаю, это было потому, что у меня есть два разных направления перенаправления (<
и >
) в одной строке, но как это исправить?
/opt/mysql/bin/mysqldump -udbuser -pAdmin@123 **> ./backup.sql** 2>&1 | grep -v "Warning"
измените порядок, перемещая перенаправляющую часть до конца команды, сделают это.
/opt/mysql/bin/mysqldump -udbuser -pAdmin@123 2>&1 | grep -v "Warning" **> ./backup.sql**
Кстати, импорт sql должен содержать <./backup.sql
в середине команды.
/opt/mysql/bin/mysql -udbuser -pAdmin@123 < ./backup.sql 2>&1 | grep -v "Warning"
2>&1
связывает обе файловые дескрипторы вместе. Вы только хотите grep на stderr, поэтому, используя '| &', только stderr переходит в grep.
Итак, на демпинге:
/opt/mysql/bin/mysqldump ... movdcservicedb > ./backup.sql |& grep -v "Warning"