Считаете, что Ubuntu недостаточно дружелюбна к новичкам? Помогите создать новое Руководство для новичков!
0 Пользователей и 1 Гость просматривают эту тему.
#!/bin/sh# Edit these two lines.# Create the base directory for backups._BACKUP="/home/.backup/$(date +%F)"# Quote section names with special characters._SHARES='netlogon work "1S bases"'test -d "$_BACKUP" && exit 0do_backup(){ test -f "$1" && { echo "The '$1' already exists." >&2 return 0 } tar -C / -caf "$1" \ --transform="s#^${2#/}#${3}#x" \ -- "${2#/}"}mkdir "$_BACKUP" || { echo "Can't create backup directory '$_BACKUP', aborting." >&2 exit 1 }getent passwd | grep -ivE "^(root|admin(istrator)?)\>" | while IFS=: read -r _u _ _ _ _ _h _; do test "${_h#/home}" = "${_h}" && continue _h="$(readlink -fe "$_h")" test "${_h#/}" || continue test -d "$_h" || continue _name="$_u$(date +"-%F")" _file="$_BACKUP/$_name.tar.gz" do_backup "$_file" "${_h}" "$_name"done# Pack the shareseval printf '%s\\n' $_SHARES | while read -r _s; do _h="$(readlink -fe "$(testparm --section-name "$_s" --parameter-name path -s)")" 2> /dev/null test "${_h#/}" || continue test -d "$_h" || { echo "Unable to find the path for section '$_s'." >&2 continue } _name="$_s$(date +"-%F")" _file="$_BACKUP/s-$_name.tar.gz" do_backup "$_file" "${_h}" "$_name"done
getent passwd | cut -d: -f1,6 | grep -ivwE "^(root|admin(istrator)?)"
getent passwd | sed -r '/^(root|admin(istrator)?)\b/d;s/:[^:]*$//;s/:.*:/\t/'
eval printf '%s\\n' $_SHARES | while read -r _s
_SHARES=(netlogon work "1S bases")for _s in "${_SHARES[@]}"
Код: (bash) [Выделить]getent passwd | cut -d: -f1,6 | grep -ivwE "^(root|admin(istrator)?)"илиКод: (bash) [Выделить]getent passwd | sed -r '/^(root|admin(istrator)?)\b/d;s/:[^:]*$//;s/:.*:/\t/'Но это так, лучшее враг хорошего.
А вот такой "наворот" Цитироватьeval printf '%s\\n' $_SHARES | while read -r _sне совсем понял. Зачем так сложно?Код: (bash) [Выделить]_SHARES=(netlogon work "1S bases")for _s in "${_SHARES[@]}"
Что делать, если надо отвлечься от целой ночи, убитой на попытки поднять AD на стоковой самбе, и наконец понять, что это в принципе невозможно?
Для всего есть готовые решения. Что делать, если функциональность этих решений не устраивает?
И для какого применения используется Ваш скипт? Для домашнего юзера проще и понятнее будет даже DejaDup. А в серьёзном продакшене такие шкрипты не используются вообще. Это так, джастфорфанство. В принципе, почему бы и нет, если очень хочется.
Не упарываться, а использовать тот продукт, который отвечает требованиям. В серьёзном продакшене так и делают, это очевидно.
А ты видел ЧТО там используют?
А потом появляются новости (больница|полиция) платит выкуп за зашифрованные данные. На $имя_ресурса пропали все данные, ведь админ случайно rm -rf !!!111
А вы не обратили внимание, что я делаю всё то же самое? Но без cut. И без sed.read сам вполне справляется с этой задачей.
Затем, что это не bash.В стандарте POSIX нет массивов.
_SHARES='netlogon:work:1S bases'while read _s ; do …done < <(IFS=: ; printf '%s\n' $_SHARES)# echo $_SHARES | tr : \\n
echo $_SHARES | xargs printf '%s\n'
echo $_SHARES | xargs -n1
Страница сгенерирована за 0.056 секунд. Запросов: 25.