Вы можете использовать xargs для параллельного запуска команды и управления количеством одновременных заданий. Выполнение 200 заданий резервного копирования может привести к перегрузке базы данных и снижению производительности до оптимального.
При условии, что у вас есть файл backup.sh с одной командой резервного копирования на строку
xargs -P5 -I{} bash -c "{}" < backup.sh
Команды в файле backup.shдолжно быть изменено, чтобы разрешить цитирование (используя одинарную кавычку, когда это возможно, избегая двойной кавычки):
psql --host=somehost --port=5490 --username=user --dbname=db -c '\copy dbo.tablename TO \"/home/username/Desktop/PostgresFiles/tablename.csv\" with DELIMITER \",\"';
Где -P5 контролирует количество одновременных заданий. Это позволит обрабатывать командные строки БЕЗ двойных кавычек. Для приведенного выше сценария вы меняете "\copy ..."
на '\copy ...'
Более простой альтернативой будет использование помощника backup-table.sh
, который будет принимать два параметра (таблица, файл), и использования
xargs -P5 -I{} backup-table.sh "{}" < tables.txt
И поместите все сложные цитаты в backup-table.sh