2015-07-29 4 views
0

Здравствуйте, я пытаюсь скопировать все файлы из каталога Documents в каталог резервного копирования с меткой времени. Поэтому я создал папку с именем bk $ (отметка времени в папке), и я пытаюсь скопировать файлы из каталога Documents в новую созданную папку, которая уникальна. Это будет в crontab, резервное копирование файлов из документов и при резервном копировании, он создаст новый каталог для каждой резервной копии, который однозначно идентифицируется по метке времени папки. По какой-то причине я не могу получить cp или cpio -mdp. Теперь кто-то упомянул, что я могу использовать переменную $ PATH, которая кажется многообещающей, если это решение, если кто-то может помочь мне в работе.Как скопировать файлы в автоматическую сгенерированную папку с меткой времени?

bkdest=home/user/backup/ 
bksource="/home/user/Documents/" 
export PATH=/$bkdest:$PATH 
mkdir /"$bkdest"bk.$(date +%Y_%m_%d_%H_%M_%S) 
cp /"$bksource"* $PATH 

Мой другой подход, который я пытался использовать, чтобы заставить его работать:

cp $bksource * ls | tail -l | $PATH 

я мог бы с CTime, но, к сожалению, она не работает с датой создания папок.

Это был мой подход, но с последней созданной папке, а не файл

find $HOME -type d -daystart ctime 0 

Если кто-то может помочь мне, чтобы скопировать в эту новую папку, я бы очень признателен. Спасибо!

ответ

0

магазин целевое имя в переменной:

bkdest=/home/user/backup 
bksource=/home/user/Documents 

target=${bkdest}/bk.$(date +%Y_%m_%d_%H_%M_%S) 
mkdir -p $target 
cp ${bksource}/* ${target}/ 

Примечание Я убирала ваше использование переменных мало.

Кроме того, это не будет копировать подкаталоги. Для этого вам необходимо использовать cp -R. Когда я делаю резервные копии, я предпочитаю использовать rsync.

+0

О, черт возьми, спасибо! Я не был уверен в цели и как она работает. Я слышал, что то же самое можно сделать с помощью $ PATH. Это? Я открыт для разных способов, которые в этой ситуации могут быть достигнуты. – Dmitriy

0

Я не совсем понял ваш подход или что именно вы хотите сделать, но здесь он идет.

CP подход

Вы не должны использовать cp для резервного копирования, rsync гораздо больше подходит для этого. Но если по какой-то причине вам действительно необходимо использовать cp, вы можете использовать следующий скрипт.

#!/bin/bash 

BKP_DIR=/tmp/bkp 
BKP_SRC=/tmp/foo 
SNAPSHOT=${BKP_DIR}/$(date +%F.%H-%M-%S.%N) 

mkdir -p ${SNAPSHOT} 
cp -r ${BKP_SRC}/* ${SNAPSHOT} 

Rsync подход

Нет больших изменений здесь.

#!/bin/bash 

BKP_DIR=/tmp/bkp 
BKP_SRC=/tmp/foo 
SNAPSHOT=${BKP_DIR}/$(date +%F.%H-%M-%S.%N) 

rsync -a ${BKP_SRC}/ ${SNAPSHOT}/ 

Улучшенный подход Rsync (РЕКОМЕНДУЕТСЯ)

#!/bin/bash 

BKP_DIR=/tmp/bkp 
BKP_SRC=/tmp/foo 
SNAPSHOT=${BKP_DIR}/$(date +%F.%H-%M-%S.%N) 
LATEST=${BKP_DIR}/latest 

rsync        \ 
    --archive      \  
    --delete      \  
    --backup      \  
    --backup-dir=${SNAPSHOT}  \  
    --log-file=${BKP_DIR}/rsync.log \ 
${BKP_SRC}/ ${LATEST}/ 

ОБЪЯСНЕНИЕ:--archive плюс --delete убедитесь, что $LATEST является идеальной копией $BKP_SRC, это означает, что файлы больше, что не существует в $BKP_SRC будет быть удалены с $LATEST. Опция --archive также гарантирует, что разрешения и владельцы будут поддерживаться, символические ссылки будут скопированы как символические ссылки и многое другое (посмотрите на man rsync для получения дополнительной информации).

Параметры --backup plus --backup-dir создадут резервную директорию для размещения дифференциальных файлов. Другими словами, все файлы, которые были удалены или изменены после последней резервной копии, будут помещены туда, поэтому вы не потеряете их, поскольку они удалены с $LATEST.

--log-file не является обязательным, но это хорошо для ведения журналов для целей отладки.

В конце вы получаете инкрементную резервную копию.

Смежные вопросы