Простая команда резервного копирования

В моем случае причина в том, что я не использую PulseAudio и «начиная с версии 4.3, звуковая система ALSA больше не поддерживается без PulseAudio» (источник)

0
задан 26 October 2017 в 17:42

9 ответов

Посмотрите на команду logrotate. В конфигурационном файле вы указываете, как создать резервную копию старой версии. Затем вы вызываете:

logrotate -f config_file

Простым примером файла конфигурации будет:

/path/to/text.txt {
  rotate 10
}

У вас есть много других опций, таких как dateext, postrotate, preerotate и т. Д.

С датой даты дата добавляется в конце имени файла, поэтому вы знаете, когда была создана резервная копия. Post / Pre rotate может выполнять некоторые задачи до и после резервного копирования.

Если вы используете номер, он немного отличается по мере того, как вы привыкли. 1 - последний файл, а возраст увеличивается с номером.

Не помещайте конфигурационный файл в /etc/logrotate.d/, потому что logrotate запускает автоматически файлы конфигурации из этого каталога. Вы хотите запустить его только тогда, когда захотите, и предоставить файл конфигурации для зависания.

4
ответ дан 22 May 2018 в 17:06
  • 1
    Спасибо, что демонам использовать для управления /var/log записей нет? Я думал об этом, но я не помнил названия, и я думал, что это дизайн как демон, а не как команда, которую вы можете назвать иногда. – Peregring-lk 26 October 2017 в 17:59
  • 2
    Да, это то, что используется для поворота журналов в /var/log. Вы можете заглянуть в etc/logrotate.d/* файлы и посмотреть, как это делается. – nobody 27 October 2017 в 10:44

Посмотрите на команду logrotate. В конфигурационном файле вы указываете, как создать резервную копию старой версии. Затем вы вызываете:

logrotate -f config_file

Простым примером файла конфигурации будет:

/path/to/text.txt { rotate 10 }

У вас есть много других опций, таких как dateext, postrotate, preerotate и т. Д.

С датой даты дата добавляется в конце имени файла, поэтому вы знаете, когда была создана резервная копия. Post / Pre rotate может выполнять некоторые задачи до и после резервного копирования.

Если вы используете номер, он немного отличается по мере того, как вы привыкли. 1 - последний файл, а возраст увеличивается с номером.

Не помещайте конфигурационный файл в /etc/logrotate.d/, потому что logrotate запускает автоматически файлы конфигурации из этого каталога. Вы хотите запустить его только тогда, когда захотите, и предоставить файл конфигурации для зависания.

4
ответ дан 18 July 2018 в 04:30

Посмотрите на команду logrotate. В конфигурационном файле вы указываете, как создать резервную копию старой версии. Затем вы вызываете:

logrotate -f config_file

Простым примером файла конфигурации будет:

/path/to/text.txt { rotate 10 }

У вас есть много других опций, таких как dateext, postrotate, preerotate и т. Д.

С датой даты дата добавляется в конце имени файла, поэтому вы знаете, когда была создана резервная копия. Post / Pre rotate может выполнять некоторые задачи до и после резервного копирования.

Если вы используете номер, он немного отличается по мере того, как вы привыкли. 1 - последний файл, а возраст увеличивается с номером.

Не помещайте конфигурационный файл в /etc/logrotate.d/, потому что logrotate запускает автоматически файлы конфигурации из этого каталога. Вы хотите запустить его только тогда, когда захотите, и предоставить файл конфигурации для зависания.

4
ответ дан 24 July 2018 в 18:06

Вы можете просто сгенерировать число, а затем продолжить его и зарегистрировать в файле.

Например.

#!/bin/bash
IDFILE="/path/to/file/.id_number"
ID=`cat $IDFILE`

#New ID for the next one
echo $[ID + 1] > $IDFILE

Создайте файл .id_number с номером, по которому вы хотите начать, и вы можете начать его использовать.

0
ответ дан 22 May 2018 в 17:06

Я создал сценарий 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
0
ответ дан 22 May 2018 в 17:06

Я создал сценарий 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
0
ответ дан 18 July 2018 в 04:30

Вы можете просто сгенерировать число, а затем продолжить его и зарегистрировать в файле.

Например.

#!/bin/bash IDFILE="/path/to/file/.id_number" ID=`cat $IDFILE` #New ID for the next one echo $[ID + 1] > $IDFILE

Создайте файл .id_number с номером, по которому вы хотите начать, и вы можете начать его использовать.

0
ответ дан 18 July 2018 в 04:30

Я создал сценарий 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
0
ответ дан 24 July 2018 в 18:06

Вы можете просто сгенерировать число, а затем продолжить его и зарегистрировать в файле.

Например.

#!/bin/bash IDFILE="/path/to/file/.id_number" ID=`cat $IDFILE` #New ID for the next one echo $[ID + 1] > $IDFILE

Создайте файл .id_number с номером, по которому вы хотите начать, и вы можете начать его использовать.

0
ответ дан 24 July 2018 в 18:06

Другие вопросы по тегам:

Похожие вопросы: