Не используйте псевдоним. Используйте функцию оболочки. Как это
function sysctl_start {
systemctl start "$1" && echo SUCCESS || echo FAILURE
}
или даже лучше
function sysctl_start {
systemctl start "$1"
systemctl status "$1"
}
, если вы хотите просто специальное обращение для запуска, но держите имя, напишите обертку
function systemctl {
if [ "$2" = start ]; then
shift
/usr/bin/systemctl start "$@" && echo "SUCCESS" || echo "FAILURE"
else
/usr/bin/systemctl "$@"
fi
}
У меня есть dir в
/home
под названиемbackups
, поэтому я ищу возможность пропустить этот каталог из резервной копии, используя, скажем,-x /home/backups
. Как мне это реализовать?
Чтобы это реализовать, вы просмотрите скрипт и найдете соответствующие строки для создания резервной копии каталога:
# Compress tables and files
cd $TARGET_DIR
tar -czf $BACKUP_DIR/backup.incoming/$backup_filename -C $BACKUP_DIR/backup.incoming/ mysql_dump.sql $TARGET_DIR
Вы обнаружите, что он использует tar
, так что вы просмотрите страницу man для tar и определите, что опция исключить является --исключить
, а не x
. Затем вы примените изменения к файлу и протестируете его.
Вместо того, чтобы исключать фиксированную директорию, имеет смысл - в контексте скрипта - использовать переменную, которая объявляет директорию резервного копирования, $BACKUP_DIR
.
tar -czf $BACKUP_DIR/backup.incoming/$backup_filename -C $BACKUP_DIR/backup.incoming/ --exclude $BACKUP_DIR mysql_dump.sql $TARGET_DIR
Пока вы редактировали скрипт, было бы еще лучше (тривиально) модифицировать большую часть скрипта так, чтобы он мог справляться с именами каталогов, содержащих пробелы и другие странности. Вы бы сделали это, цитируя большинство переменных. Например, раздел tar
стал бы таким:
# Compress tables and files
cd "$TARGET_DIR"
tar -czf "$BACKUP_DIR/backup.incoming/$backup_filename" -C "$BACKUP_DIR/backup.incoming/" --exclude "$BACKUP_DIR" mysql_dump.sql "$TARGET_DIR"