В моем случае причина в том, что я не использую PulseAudio и «начиная с версии 4.3, звуковая система ALSA больше не поддерживается без PulseAudio» (источник)
Посмотрите на команду logrotate. В конфигурационном файле вы указываете, как создать резервную копию старой версии. Затем вы вызываете:
logrotate -f config_file
Простым примером файла конфигурации будет:
/path/to/text.txt {
rotate 10
}
У вас есть много других опций, таких как dateext, postrotate, preerotate и т. Д.
С датой даты дата добавляется в конце имени файла, поэтому вы знаете, когда была создана резервная копия. Post / Pre rotate может выполнять некоторые задачи до и после резервного копирования.
Если вы используете номер, он немного отличается по мере того, как вы привыкли. 1 - последний файл, а возраст увеличивается с номером.
Не помещайте конфигурационный файл в /etc/logrotate.d/, потому что logrotate запускает автоматически файлы конфигурации из этого каталога. Вы хотите запустить его только тогда, когда захотите, и предоставить файл конфигурации для зависания.
Посмотрите на команду logrotate. В конфигурационном файле вы указываете, как создать резервную копию старой версии. Затем вы вызываете:
logrotate -f config_file
Простым примером файла конфигурации будет:
/path/to/text.txt {
rotate 10
}
У вас есть много других опций, таких как dateext, postrotate, preerotate и т. Д.
С датой даты дата добавляется в конце имени файла, поэтому вы знаете, когда была создана резервная копия. Post / Pre rotate может выполнять некоторые задачи до и после резервного копирования.
Если вы используете номер, он немного отличается по мере того, как вы привыкли. 1 - последний файл, а возраст увеличивается с номером.
Не помещайте конфигурационный файл в /etc/logrotate.d/, потому что logrotate запускает автоматически файлы конфигурации из этого каталога. Вы хотите запустить его только тогда, когда захотите, и предоставить файл конфигурации для зависания.
Посмотрите на команду logrotate. В конфигурационном файле вы указываете, как создать резервную копию старой версии. Затем вы вызываете:
logrotate -f config_file
Простым примером файла конфигурации будет:
/path/to/text.txt {
rotate 10
}
У вас есть много других опций, таких как dateext, postrotate, preerotate и т. Д.
С датой даты дата добавляется в конце имени файла, поэтому вы знаете, когда была создана резервная копия. Post / Pre rotate может выполнять некоторые задачи до и после резервного копирования.
Если вы используете номер, он немного отличается по мере того, как вы привыкли. 1 - последний файл, а возраст увеличивается с номером.
Не помещайте конфигурационный файл в /etc/logrotate.d/, потому что logrotate запускает автоматически файлы конфигурации из этого каталога. Вы хотите запустить его только тогда, когда захотите, и предоставить файл конфигурации для зависания.
Вы можете просто сгенерировать число, а затем продолжить его и зарегистрировать в файле.
Например.
#!/bin/bash
IDFILE="/path/to/file/.id_number"
ID=`cat $IDFILE`
#New ID for the next one
echo $[ID + 1] > $IDFILE
Создайте файл .id_number с номером, по которому вы хотите начать, и вы можете начать его использовать.
Я создал сценарий bash, который способен обрабатывать аналогичную задачу.
Скрипт имеет функцию
Скрипт создаст резервную копию файла или каталога target. Также он может обрабатывать несколько файлов и (или) каталогов. Имя нового файла (или нового каталога) будет target.N, где N является последовательным номером резервной копии. У сценария есть два варианта: --backup-chain=<chain name> - эта опция добавит строку <chain name> к имени файла резервной копии, и нумерация этой цепочки будет независимой от других цепей. --verbose-mode - этот параметр добавит -v в список параметров команды cp. Здесь представлено несколько примеров использования: https://paste.ubuntu.com/25847541/В сценарии есть функции
1. Создайте исполняемый файл сценария, названный sbcp (простая резервная копия), который находится в /usr/local/bin, чтобы быть доступным как команда оболочки:
sudo touch /usr/local/bin/sbcp
sudo chmod +x /usr/local/bin/sbcp
sudo nano /usr/local/bin/spcp
1.. Содержимое скрипта sbcp:
#!/bin/bash
# simple backup copy - sbcp
# Compose the info message - ref: https://askubuntu.com/a/583445/566421
info_message() {
printf "Please set target - one or more file or directory: \e[33msbcp 'file1' 'file2' 'dir1/file3' 'dir2'\e[0m\n"
printf "Use the option \e[33m--backup-chain='chain name'\e[0m or \e[33m--backup-chain=chain_name\e[0m to create different backup chains.\n"
printf "Use '\e[33msbcp *\e[0m' to make a backup copy for all items in the current directory, non recursively.\n"
}
# If the STDIN is not empty, then do the operations, else just output the info message
if [ ! -z "${@+x}" ]; then
# Check whether there options are set - this should be more elegant
for item in "$@"; do
# Find the backup chain name
if [[ "$item" =~ --backup-chain=.* ]]; then
BC="$(echo "${item}" | sed -e 's/--backup-chain=//' -e 's/\"//g' -e "s/'//g")"
[[ -z "$BC" ]] && BC="$BC" || BC=".$BC"
fi
# Check whether the option --backup-chain os set
if [[ "$item" =~ --verbose-mode.* ]]; then cp_options="-pvir"; else cp_options="-pir"; fi
done
# Check whether there are other input parameters different than the option --backup-chain, if there is not - output the info message and exit
if [ "$(echo "$@" | sed -e 's/--backup-chain=/./' -e 's/\"//g' -e "s/'//g")" == "${BC}" ]; then info_message && exit 1; fi
# Output the backup chain name
[[ -z "$BC" ]] && echo "Backup chain: .N" || echo "Backup chain: ${BC}.N"
# The main part - create backup copies
for item in "$@"; do
if [[ ! "$item" =~ --backup-chain=.* ]] && [[ ! "$item" =~ --verbose-mode.* ]]; then
LAST="$(ls -1d "${item}${BC}".* 2>/dev/null | awk -F'.' '{print $(NF)}' | grep -Po '[0-9]+' | sort | tail -n1)"
cp "$cp_options" "${item}" "${item}${BC}.$((LAST+1))"
fi
done
else
info_message
fi
Я создал сценарий bash, который способен обрабатывать аналогичную задачу.
Скрипт имеет функцию
Скрипт создаст резервную копию файла или каталога target. Также он может обрабатывать несколько файлов и (или) каталогов. Имя нового файла (или нового каталога) будет target.N, где N является последовательным номером резервной копии. У сценария есть два варианта: --backup-chain=<chain name> - эта опция добавит строку <chain name> к имени файла резервной копии, и нумерация этой цепочки будет независимой от других цепей. --verbose-mode - этот параметр добавит -v в список параметров команды cp. Здесь представлено несколько примеров использования: https://paste.ubuntu.com/25847541/В сценарии есть функции
1. Создайте исполняемый файл сценария, названный sbcp (простая резервная копия), который находится в /usr/local/bin, чтобы быть доступным как команда оболочки:
sudo touch /usr/local/bin/sbcp
sudo chmod +x /usr/local/bin/sbcp
sudo nano /usr/local/bin/spcp
1.. Содержимое скрипта sbcp:
#!/bin/bash
# simple backup copy - sbcp
# Compose the info message - ref: https://askubuntu.com/a/583445/566421
info_message() {
printf "Please set target - one or more file or directory: \e[33msbcp 'file1' 'file2' 'dir1/file3' 'dir2'\e[0m\n"
printf "Use the option \e[33m--backup-chain='chain name'\e[0m or \e[33m--backup-chain=chain_name\e[0m to create different backup chains.\n"
printf "Use '\e[33msbcp *\e[0m' to make a backup copy for all items in the current directory, non recursively.\n"
}
# If the STDIN is not empty, then do the operations, else just output the info message
if [ ! -z "${@+x}" ]; then
# Check whether there options are set - this should be more elegant
for item in "$@"; do
# Find the backup chain name
if [[ "$item" =~ --backup-chain=.* ]]; then
BC="$(echo "${item}" | sed -e 's/--backup-chain=//' -e 's/\"//g' -e "s/'//g")"
[[ -z "$BC" ]] && BC="$BC" || BC=".$BC"
fi
# Check whether the option --backup-chain os set
if [[ "$item" =~ --verbose-mode.* ]]; then cp_options="-pvir"; else cp_options="-pir"; fi
done
# Check whether there are other input parameters different than the option --backup-chain, if there is not - output the info message and exit
if [ "$(echo "$@" | sed -e 's/--backup-chain=/./' -e 's/\"//g' -e "s/'//g")" == "${BC}" ]; then info_message && exit 1; fi
# Output the backup chain name
[[ -z "$BC" ]] && echo "Backup chain: .N" || echo "Backup chain: ${BC}.N"
# The main part - create backup copies
for item in "$@"; do
if [[ ! "$item" =~ --backup-chain=.* ]] && [[ ! "$item" =~ --verbose-mode.* ]]; then
LAST="$(ls -1d "${item}${BC}".* 2>/dev/null | awk -F'.' '{print $(NF)}' | grep -Po '[0-9]+' | sort | tail -n1)"
cp "$cp_options" "${item}" "${item}${BC}.$((LAST+1))"
fi
done
else
info_message
fi
Вы можете просто сгенерировать число, а затем продолжить его и зарегистрировать в файле.
Например.
#!/bin/bash
IDFILE="/path/to/file/.id_number"
ID=`cat $IDFILE`
#New ID for the next one
echo $[ID + 1] > $IDFILE
Создайте файл .id_number с номером, по которому вы хотите начать, и вы можете начать его использовать.
Я создал сценарий bash, который способен обрабатывать аналогичную задачу.
Скрипт имеет функцию
Скрипт создаст резервную копию файла или каталога target. Также он может обрабатывать несколько файлов и (или) каталогов. Имя нового файла (или нового каталога) будет target.N, где N является последовательным номером резервной копии. У сценария есть два варианта: --backup-chain=<chain name> - эта опция добавит строку <chain name> к имени файла резервной копии, и нумерация этой цепочки будет независимой от других цепей. --verbose-mode - этот параметр добавит -v в список параметров команды cp. Здесь представлено несколько примеров использования: https://paste.ubuntu.com/25847541/В сценарии есть функции
1. Создайте исполняемый файл сценария, названный sbcp (простая резервная копия), который находится в /usr/local/bin, чтобы быть доступным как команда оболочки:
sudo touch /usr/local/bin/sbcp
sudo chmod +x /usr/local/bin/sbcp
sudo nano /usr/local/bin/spcp
1.. Содержимое скрипта sbcp:
#!/bin/bash
# simple backup copy - sbcp
# Compose the info message - ref: https://askubuntu.com/a/583445/566421
info_message() {
printf "Please set target - one or more file or directory: \e[33msbcp 'file1' 'file2' 'dir1/file3' 'dir2'\e[0m\n"
printf "Use the option \e[33m--backup-chain='chain name'\e[0m or \e[33m--backup-chain=chain_name\e[0m to create different backup chains.\n"
printf "Use '\e[33msbcp *\e[0m' to make a backup copy for all items in the current directory, non recursively.\n"
}
# If the STDIN is not empty, then do the operations, else just output the info message
if [ ! -z "${@+x}" ]; then
# Check whether there options are set - this should be more elegant
for item in "$@"; do
# Find the backup chain name
if [[ "$item" =~ --backup-chain=.* ]]; then
BC="$(echo "${item}" | sed -e 's/--backup-chain=//' -e 's/\"//g' -e "s/'//g")"
[[ -z "$BC" ]] && BC="$BC" || BC=".$BC"
fi
# Check whether the option --backup-chain os set
if [[ "$item" =~ --verbose-mode.* ]]; then cp_options="-pvir"; else cp_options="-pir"; fi
done
# Check whether there are other input parameters different than the option --backup-chain, if there is not - output the info message and exit
if [ "$(echo "$@" | sed -e 's/--backup-chain=/./' -e 's/\"//g' -e "s/'//g")" == "${BC}" ]; then info_message && exit 1; fi
# Output the backup chain name
[[ -z "$BC" ]] && echo "Backup chain: .N" || echo "Backup chain: ${BC}.N"
# The main part - create backup copies
for item in "$@"; do
if [[ ! "$item" =~ --backup-chain=.* ]] && [[ ! "$item" =~ --verbose-mode.* ]]; then
LAST="$(ls -1d "${item}${BC}".* 2>/dev/null | awk -F'.' '{print $(NF)}' | grep -Po '[0-9]+' | sort | tail -n1)"
cp "$cp_options" "${item}" "${item}${BC}.$((LAST+1))"
fi
done
else
info_message
fi
Вы можете просто сгенерировать число, а затем продолжить его и зарегистрировать в файле.
Например.
#!/bin/bash
IDFILE="/path/to/file/.id_number"
ID=`cat $IDFILE`
#New ID for the next one
echo $[ID + 1] > $IDFILE
Создайте файл .id_number с номером, по которому вы хотите начать, и вы можете начать его использовать.