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

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

15.03.2013, 13:37. Показов 4009. Ответов 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
Ответ Создать тему
Новые блоги и статьи
сукцессия микоризы: основная теория в виде двух уравнений.
anaschu 11.01.2026
https:/ / rutube. ru/ video/ 7a537f578d808e67a3c6fd818a44a5c4/
WordPad для Windows 11
Jel 10.01.2026
WordPad для Windows 11 — это приложение, которое восстанавливает классический текстовый редактор WordPad в операционной системе Windows 11. После того как Microsoft исключила WordPad из. . .
Classic Notepad for Windows 11
Jel 10.01.2026
Old Classic Notepad for Windows 11 Приложение для Windows 11, позволяющее пользователям вернуть классическую версию текстового редактора «Блокнот» из Windows 10. Программа предоставляет более. . .
Почему дизайн решает?
Neotwalker 09.01.2026
В современном мире, где конкуренция за внимание потребителя достигла пика, дизайн становится мощным инструментом для успеха бренда. Это не просто красивый внешний вид продукта или сайта — это. . .
Модель микоризы: классовый агентный подход 3
anaschu 06.01.2026
aa0a7f55b50dd51c5ec569d2d10c54f6/ O1rJuneU_ls https:/ / vkvideo. ru/ video-115721503_456239114
Owen Logic: О недопустимости использования связки «аналоговый ПИД» + RegKZR
ФедосеевПавел 06.01.2026
Owen Logic: О недопустимости использования связки «аналоговый ПИД» + RegKZR ВВЕДЕНИЕ Введу сокращения: аналоговый ПИД — ПИД регулятор с управляющим выходом в виде числа в диапазоне от 0% до. . .
Модель микоризы: классовый агентный подход 2
anaschu 06.01.2026
репозиторий https:/ / github. com/ shumilovas/ fungi ветка по-частям. коммит Create переделка под биомассу. txt вход sc, но sm считается внутри мицелия. кстати, обьем тоже должен там считаться. . . .
Расчёт токов в цепи постоянного тока
igorrr37 05.01.2026
/ * Дана цепь постоянного тока с сопротивлениями и источниками (напряжения, ЭДС и тока). Найти токи и напряжения во всех элементах. Программа составляет систему уравнений по 1 и 2 законам Кирхгофа и. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru