Похож mark-modified-lines
включен в Вашей оболочке. Попытайтесь отключить его в ~/.inputrc
:
set mark-modified-lines Off
Детали в man bash
.
В Вашем комментарии к ответу @tink Вы хотите отдельные файлы в .gz
файлы:
mysqldump --opt --databases $dbname1 --host=$dbhost1 --user=$dbuser1 --password=$dbpass1 > '/var/tmp/$dbhost1.$dbname1.sql' ; mysqldump --opt --databases $dbname2 --host=$dbhost1 --user=$dbuser1 --password=$dbpass1 > '/var/tmp/$dbhost1.$dbname2.sql' ; mysqldump --opt --databases $dbname3 --host=$dbhost2 --user=$dbuser2 --password=$dbpass2 > '/var/tmp/$dbhost1.$dbname3.sql' ; mysqldump --opt --databases $dbname4 --host=$dbhost2 --user=$dbuser2 --password=$dbpass2 > '/var/tmp/$dbhost1.$dbname4.sql' ; cd /var/tmp; tar cvzf backupfile.sql.gz \$dbhost1.\$dbname*.sql
backupfile.sql.tgz
таким образом, это более ясно опытным пользователям, это - файл tar, который сжатrm \$dbhost1.\$dbname*.sql
избавиться от промежуточных файловzip
как альтернатива сжатому tar.tar
, zip
), я не знаю о хитрости промежуточных файлов.Приложение
Если Вы действительно не хотите промежуточные файлы (и предположение, что вывод умещается в памяти), Вы могли попробовать что-то как следующая программа Python. Можно записать это как остроту ( python -c "from subprocess import checkout; from cStr....
), но я действительно не рекомендую это.
from subprocess import check_output
from cStringIO import StringIO
import tarfile
outputdata = [
('$dbhost1.$dbname1.sql', '$dbname1'),
('$dbhost1.$dbname2.sql', '$dbname2'),
('$dbhost1.$dbname3.sql', '$dbname3'),
('$dbhost1.$dbname4.sql', '$dbname4'),
]
with tarfile.open('/var/tmp/backupfile.sql.tgz', 'w:gz') as tgz:
for outname, db in outputdata:
cmd = ['mysqldump', '--opt', '--databases']
cmd.append(db)
cmd.extend(['--host=$dbhost1', '--user=$dbuser1', '--password=$dbpass1'])
out = check_output(cmd)
buf = StringIO(out)
buf.seek(0)
tarinfo = tarfile.TarInfo(name=outname)
tarinfo.size = len(out)
tgz.addfile(tarinfo=tarinfo, fileobj=buf)
В зависимости от того, насколько регулярный Ваша база данных и 'выходные' имена - Вы, может далее изменить к лучшему это.
( mysqldump --opt --databases $dbname1 --host=$dbhost1 --user=$dbuser1 --password=$dbpass1; \
mysqldump --opt --databases $dbname2 --host=$dbhost1 --user=$dbuser1 --password=$dbpass1; \
mysqldump --opt --databases $dbname3 --host=$dbhost2 --user=$dbuser2 --password=$dbpass2; \
mysqldump --opt --databases $dbname4 --host=$dbhost2 --user=$dbuser2 --password=$dbp \
) | gzip > backupfile.sql.gz
Или как одна строка:
( mysqldump --opt --databases $dbname1 --host=$dbhost1 --user=$dbuser1 --password=$dbpass1; mysqldump --opt --databases $dbname2 --host=$dbhost1 --user=$dbuser1 --password=$dbpass1; mysqldump --opt --databases $dbname3 --host=$dbhost2 --user=$dbuser2 --password=$dbpass2; mysqldump --opt --databases $dbname4 --host=$dbhost2 --user=$dbuser2 --password=$dbp) | gzip > backupfile.sql.gz
backupfile.sql
. Действительно ли возможно что содержание backupfile.sql.gz
отдельные дампы, где имя $dbhost.$dbname.sql
? Таким образом в моем примере, backupfile.sql.gz
должен содержать $dbhost1.$dbname1.sql
, $dbhost1.$dbname2.sql
, $dbhost2.$dbname3.sql
и $dbhost2.$dbname4.sql
– arvinsim
10.05.2013, 08:28
/var/tmp
(и промежуточные файлы и окончательный результат.tgz
). А-ч – Anthon 10.05.2013, 09:34