Как перенаправить вывод экрана tar / dd в файл? - PullRequest
0 голосов
/ 20 февраля 2019

У меня есть пример кода ниже, где я использую tar / dd для резервного копирования файлов на ленту ...

time tar -cvf - \
/home/user1 \
/home/user2 | dd bs=128k of=/dev/rmt0 2>&1 | tee -a debug.log
mail -s "testing" admin@domain.com < debug.log

Проблема в том, что когда я запускаю это, на экран выводится следующее ...

a /home/user1/fileA 10 blocks.
a /home/user2/fileB 1 blocks.
0+1 records in.
0+1 records out.

real    0m2.253s
user    0m0.003s
sys     0m0.002s

Но в файл журнала перенаправляется только следующее ...

cat debug.log
0+1 records in.
0+1 records out.

Есть ли способ перенаправить весь вывод в журнал?

Я попытался добавить команду tee между каналом tar / dd, и это не сработало.

Это в системе под управлением IBM AIX, поэтому у меня нет доступа ко многим инструментам GNU там..

1 Ответ

0 голосов
/ 20 февраля 2019

Используйте оператор группировки ({ ... }), чтобы убедиться, что time сам подвергается перенаправлению, а также покрывается весь блок (включая tar):

{
  time tar -cvf - /home/user1 /home/user2 \
    | dd bs=128k of=/dev/rmt0
} 2>&1 | tee -a debug.log

См. BashFAQ # 32 , чтобы узнать, почему это необходимо для time, в частности.

...