Опция -s
просто покажет общее количество. Изman du
:
-s, --summarize
display only a total for each argument
Без -s
du
также будет перечислять каждый подкаталог -отдельно. В сочетании с этим вы можете просто использовать оба каталога в качестве аргументов.
du -shc directory_1 directory_2
Используемая вами команда tar
выполнит фактическую работу по резервному копированию вашего каталога /home/abc
в $filename
в каталоге /home/def
. Если вы хотите проверить наличие этого имени файла в этом каталоге перед «копированием полученного файла резервной копии в каталог», вам, вероятно, следует проверить существование файла перед запуском этой команды tar. Например:
#!/bin/bash
time=$(date +%m-%d-%y)
Backup_file=/home/abc
Dest=/home/def
filename=back-$time.tar.gz
if [ -f $filename ]; then
echo "Error file $filename already exist!"
else
tar -czf $Dest/$filename /home/abc
fi
Тем не менее, я мог бы предложить несколько "улучшений":
#!/bin/bash
today=$(date +%Y-%m-%d)
Backup_file=/home/abc
Dest=/home/def
filename=back-${Backup_file//\//_}-${today}.tar.gz
if [ -f ${filename} ]; then
echo "Error file ${filename} already exists!"
else
tar -czf ${Dest}/${filename} ${Backup_file}
fi
filename
использует переменную Backup_file
, но заменяет все экземпляры «/» с «_» (в соответствии с разделом «Расширение параметров» man bash
и, как указано в , этот ответ для замены всех экземпляров символа)Backup_file
в команде tar, так что если вы меняете переменную, ее нужно изменить только в одном месте (настоятельно рекомендуется)Если вы действительно хотите запустить команду tar, а затем проверить существование файла, вам, вероятно, следует выполнить tar во временное расположение, чтобы вы могли переместить его позже. Однако, если вы не собираетесь ничего делать с tar-файлом, если файл с таким же именем уже существует, то вы, возможно, потратили много времени, прежде чем обнаружите это, поэтому я думаю, что лучше проверить перед запуском команды tar. вариант.