Форум программистов, компьютерный форум, киберфорум
Shell, Bash
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск Заказать работу  
 
Рейтинг 4.90/21: Рейтинг темы: голосов - 21, средняя оценка - 4.90
 Аватар для webber
7 / 7 / 2
Регистрация: 21.10.2012
Сообщений: 101

Покритикуйте мой скрипт резервного копирования файлов

15.03.2013, 13:37. Показов 4047. Ответов 13
Метки нет (Все метки)

Студворк — интернет-сервис помощи студентам
Покритикуйте мой скрипт, создающий резервные копии всех файлов текущего каталога и перемещающий их в новый каталог.

Bash
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
#!/bin/sh
 
root_path=$(cd $(dirname $0) && pwd)
 
if [ -z "$1" ]; then
    echo "Каталог для резервного копирования:"
    read path_for_backup
else
    path_for_backup=$1
fi
 
if [ ! -d $path_for_backup ]; then
    mkdir -p $path_for_backup
    echo "Каталог $path_for_backup успешно создан"
fi
        
cp -pRdfv $root_path/* $path_for_backup
echo "Все файлы из $root_path скопированы в $path_for_backup"
0
IT_Exp
Эксперт
34794 / 4073 / 2104
Регистрация: 17.06.2006
Сообщений: 32,602
Блог
15.03.2013, 13:37
Ответы с готовыми решениями:

Не работает скрипт резервного копирования для новых файлов
find . -type f -mtime -10 -print0 | xargs -0 tar -cjf archive.tar.bz2 Не пашет на рабочем проект (добавилось порядка 2к картинок) -...

Скрипт резервного копирования
Помогите, пожалуйста, написать скрипт резервного копирования заданной директории, имя архива должно содержать текущую дату. Буду очень...

Скрипт резервного копирования
Ребят помогите пожалуйста, я в Python очень плохо разбираюсь, учили мы его очень быстро, практически сами.Задали такую работу.Написать...

13
4866 / 3288 / 468
Регистрация: 10.12.2008
Сообщений: 10,570
15.03.2013, 13:55
Цитата Сообщение от webber Посмотреть сообщение
Bash
1
root_path=$(cd $(dirname $0) && pwd)
для чего выполняется cd и pwd ?

Цитата Сообщение от webber Посмотреть сообщение
Bash
1
if [ ! -d $path_for_backup ]; then
переменную надо в кавычках записывать - в пути могут быть пробелы

Цитата Сообщение от webber Посмотреть сообщение
Bash
1
echo "Каталог $path_for_backup успешно создан"
а если он не создался ?

Цитата Сообщение от webber Посмотреть сообщение
Bash
1
echo "Все файлы из $root_path скопированы в $path_for_backup"
а если какой-то не скопирован ?

Цитата Сообщение от webber Посмотреть сообщение
Bash
1
cp -pRdfv $root_path/* $path_for_backup
скрытые файлы тоже нужно копировать
0
 Аватар для webber
7 / 7 / 2
Регистрация: 21.10.2012
Сообщений: 101
15.03.2013, 23:48  [ТС]
Цитата Сообщение от accept
для чего выполняется cd и pwd ?
да, что то намудрил, $(dirname $0) вполне достаточно
Цитата Сообщение от accept
а если он не создался ?
переписал
Bash
1
2
3
4
if [ ! -d $path_for_backup ]; then
    mkdir -p $path_for_backup
    echo "Каталог $path_for_backup успешно создан"
fi
так
Bash
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
while [ ! -d "$path_for_backup" ]
do
    mkdir -p $path_for_backup
    
    if [ ! -d "$path_for_backup" ]; then
        echo -n "Другой путь? (y/N): "
        read item
        case "$item" in
            y|Y)    echo -n "Каталог для резервного копирования: "
                read path_for_backup;;
                
            n|N)    exit 0;;
            
            *)  exit 0;;
        esac        
    else
        echo "Каталог $path_for_backup успешно создан"
        
    fi  
done
Цитата Сообщение от accept
а если какой-то не скопирован ?
чтобы это отловить нужно копировать пофайлово или можно как то проще?
Цитата Сообщение от accept
скрытые файлы тоже нужно копировать
вроде, копируются...
0
4866 / 3288 / 468
Регистрация: 10.12.2008
Сообщений: 10,570
16.03.2013, 00:06
Цитата Сообщение от webber Посмотреть сообщение
да, что то намудрил, $(dirname $0) вполне достаточно
а для чего это ограничение ? зачем сам скрипт привязывать к каталогу ?

Цитата Сообщение от webber Посмотреть сообщение
переписал
я имел в виду, что надо проверять код возврата mkdir, а не просто писать, что каталог создан

Цитата Сообщение от webber Посмотреть сообщение
чтобы это отловить
надо проверять код возврата у cp

Цитата Сообщение от webber Посмотреть сообщение
вроде, копируются...
Code
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
[guest@localhost t]$ ls -a
.  ..  a  b
[guest@localhost t]$ ls -a a b
a:
.  ..  .file.txt  file.txt
 
b:
.  ..
[guest@localhost t]$ cp -pRdfv a/* b
«a/file.txt» -> «b/file.txt»
[guest@localhost t]$ ls -a a b
a:
.  ..  .file.txt  file.txt
 
b:
.  ..  file.txt
[guest@localhost t]$
не копируются, речь идёт про звёздочку, она не захватывает скрытые файлы (если не установлена опция dotglob)
0
 Аватар для webber
7 / 7 / 2
Регистрация: 21.10.2012
Сообщений: 101
16.03.2013, 17:25  [ТС]
Цитата Сообщение от accept Посмотреть сообщение
не копируются, речь идёт про звёздочку, она не захватывает скрытые файлы (если не установлена опция dotglob)
дописываю в скрипт строчку: shopt -s dotglob ,но файлы, начинающиеся с точки, так и не копируются...
0
4866 / 3288 / 468
Регистрация: 10.12.2008
Сообщений: 10,570
17.03.2013, 02:54
Bash
1
2
shopt -s dotglob
ls ~/*
проверь, что выводится
0
 Аватар для webber
7 / 7 / 2
Регистрация: 21.10.2012
Сообщений: 101
17.03.2013, 17:10  [ТС]
если вставить эти строчки в скрипт, то выводится список папок и файлов в них на уровень выше чем лежит сам скрипт, но без скрытых файлов,
а если просто написать их в консоль, то выводится полный список включая и скрытые файлы
0
4866 / 3288 / 468
Регистрация: 10.12.2008
Сообщений: 10,570
17.03.2013, 22:00
Цитата Сообщение от webber Посмотреть сообщение
Bash
1
#!/bin/sh
замени на #!/bin/bash
0
 Аватар для webber
7 / 7 / 2
Регистрация: 21.10.2012
Сообщений: 101
17.03.2013, 22:56  [ТС]
accept, ничего не изменилось
0
4866 / 3288 / 468
Регистрация: 10.12.2008
Сообщений: 10,570
17.03.2013, 23:48
Bash
1
2
3
4
5
6
7
8
9
10
#!/bin/sh
 
shopt -p dotglob
shopt -s dotglob
shopt -p dotglob
touch .file.txt
ls * | grep file
rm -f .file.txt
 
exit 0
вывод сюда скопируй
0
 Аватар для webber
7 / 7 / 2
Регистрация: 21.10.2012
Сообщений: 101
18.03.2013, 00:19  [ТС]
ругается shopt: not found
может, есть какой то другой способ копирования скрытых файлов без shopt -s dotglob ?
0
4866 / 3288 / 468
Регистрация: 10.12.2008
Сообщений: 10,570
18.03.2013, 00:44
Цитата Сообщение от webber Посмотреть сообщение
shopt: not found
а что у тебя за оболочка ? система - какая-то из bsd ?

Цитата Сообщение от webber Посмотреть сообщение
может, есть какой то другой способ копирования скрытых файлов
конечно есть

Bash
1
cp -pRdfv "$root_path" "$path_for_backup"
0
 Аватар для webber
7 / 7 / 2
Регистрация: 21.10.2012
Сообщений: 101
18.03.2013, 00:53  [ТС]
accept, gnome
а если копировать не папку, а именно файлы в ней?
0
4866 / 3288 / 468
Регистрация: 10.12.2008
Сообщений: 10,570
18.03.2013, 01:13
Цитата Сообщение от webber Посмотреть сообщение
accept, gnome
нет, я имею в виду командную оболочку, это можно посмотреть в /etc/passwd

Bash
1
IFS=$'\n'; cp -pRdfv $(find "$root_path" -mindepth 1 -maxdepth 1) "$path_for_backup"
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
BasicMan
Эксперт
29316 / 5623 / 2384
Регистрация: 17.02.2009
Сообщений: 30,364
Блог
18.03.2013, 01:13
Помогаю со студенческими работами здесь

Программа для резервного копирования файлов
Требуется программа, которая будет копировать определенную папку с жесткого диска на флэшку при каждом ее подключении к компьютеру. ...

Пакетный файл для резервного копирования файлов
Создайте новый пакетный файл Пакетный файл, предназначенный для резервного копирования файлов системной папки Windows с...

Скрипт "Утилита резервного копирования"
Создать bat с 2-мя параметрами. Первый - адрес каталога, второй - адрес создания резервной копии. Всё должно быть заархивировано. Название...

Нужен скрипт для копирования файлов
Составил небольшой скрипт для борьбы с порнобаннерами.Программа работает без глюков,но хотелось бы добавить опцию резервного копирования...

Скрипт для копирования файлов по SFTP
В общем нужен скрипт,для копирования звукозаписей с linuxs сервера по SFTP Данные для копирования берутся из файла 1(имена файлов), куда...


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
14
Ответ Создать тему
Новые блоги и статьи
Идея фильтра интернета (сервер = слой+фильтр).
Hrethgir 31.03.2026
Суть идеи заключается в том, чтобы запустить свой сервер, о чём я если честно мечтал давно и давно приобрёл книгу как это сделать. Но не было причин его запускать. Очумелые учёные напечатали на. . .
Модель здравосоХранения 6. ESG-повестка и устойчивое развитие; углублённый анализ кадрового бренда
anaschu 31.03.2026
В прикрепленном документе раздумья о том, как можно поменять модель в будущем
10 пpимет, которые всегда сбываются
Maks 31.03.2026
1. Чтобы, наконец, пришла маршрутка, надо закурить. Если сигарета последняя, маршрутка придет еще до второй затяжки даже вопреки расписанию. 2. Нaдоели зима и снег? Не надо переезжать. Достаточно. . .
Перемещение выделенных строк ТЧ из одного документа в другой
Maks 31.03.2026
Реализация из решения ниже выполнена на примере нетипового документа "ВыдачаОборудованияНаСпецтехнику" с единственной табличной частью "ОборудованиеИКомплектующие" разработанного в конфигурации КА2. . . .
Functional First Web Framework Suave
DevAlt 30.03.2026
Sauve. IO Апнулись до NET10. Из зависимостей один пакет, работает одинаково хорошо как в режиме проекта так и в интерактивном режиме. из сложностей - чисто функциональный подход. Решил. . .
Автоматическое создание документа при проведении другого документа
Maks 29.03.2026
Реализация из решения ниже выполнена на нетиповых документах, разработанных в конфигурации КА2. Есть нетиповой документ "ЗаявкаНаРемонтСпецтехники" и нетиповой документ "ПланированиеСпецтехники". В. . .
Настройка движения справочника по регистру сведений
Maks 29.03.2026
Решение ниже реализовано на примере нетипового справочника "ТарифыМобильнойСвязи" разработанного в конфигурации КА2, с целью учета корпоративной мобильной связи в коммерческом предприятии. . . .
Автозаполнение реквизита при выборе элемента справочника
Maks 27.03.2026
Программный код из решения ниже на примере нетипового документа "ЗаявкаНаРемонтСпецтехники" разработанного в конфигурации КА2. При выборе "Спецтехники" (Тип Справочник. Спецтехника), заполняется. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru