синк определенной папки

Как правильно задавать вопросы Правильно сформулированный вопрос и его грамотное оформление способствует высокой вероятности получения достаточно содержательного и по существу ответа. Общая рекомендация по составлению тем: 1. Для начала воспользуйтесь поиском форума. 2. Укажите версию ОС вместе с разрядностью. Пример: LM 19.3 x64, LM Sarah x32 3. DE. Если вопрос касается двух, то через запятую. (xfce, KDE, cinnamon, mate) 4. Какое железо. (достаточно вывод inxi -Fxz в спойлере (как пользоваться спойлером смотрим здесь)) или же дать ссылку на hw-probe 5. Суть. Желательно с выводом консоли, логами. 6. Скрин. Просьба указывать 2, 3 и 4 независимо от того, имеет ли это отношение к вопросу или нет. Так же не забываем об общих правилах Как пример вот
Аватара пользователя

Автор темы
broken
Сообщения: 341
Зарегистрирован: 01 сен 2016, 01:45
Решено: 3
Благодарил (а): 19 раз
Поблагодарили: 14 раз
Контактная информация:

синк определенной папки

#1

25 мар 2021, 10:59

Раньше синкал раздел целиком. Но подумал, что конкретную папку синкать будет удобней.
Написал это.

Код: Выделить всё

#!/bin/bash

newPwd="/media/dma/5TB/hardD/"

bPwd=`pwd`
cbPwd="$bPwd/"
#echo -ne "${beginPwd:11}"

newnewPwd="$newPwd${beginPwd:11}"
#echo -ne "$newnewPwd/"

rsync -rlstvupx --delete --progress "$cbPwd" "$newnewPwd"
Создал в начальном пункте папку, в ней вложенные. Создал в конечном пункте папку, но без вложенных.. Запустил. Эта зараза мне всё в конечном пункте посносила и оставила только ту папку, которую синкал о_О
Подскажите, пожалуйста, где ошибся?

Решение broken » 25 мар 2021, 17:48
Всё! Всем спасибо за участие! Немного ошибся я в расчетах! Теперь работает!

Код: Выделить всё

#!/bin/bash

#Задаем неизменную часть конечного пути
newPwd="/media/dma/5TB/hardD"
#Получаем начальный путь
bPwd=`pwd`
#Добавляем к нему слеш
cbPwd="$bPwd/"
#Задаем конечный путь
newnewPwd="$newPwd${cbPwd:10}"
#Синхронизация от начального к конечному
rsync -rlstvupx --delete --progress "$cbPwd" "$newnewPwd"
 ! Сообщение из: Dja
Пометил как решение, но с оговоркой: для индивидуального случая!

Перейти к ответу ➙

Аватара пользователя

demonlibra
Сообщения: 844
Зарегистрирован: 12 авг 2017, 09:09
Решено: 13
Откуда: Ростов-на-Дону
Благодарил (а): 29 раз
Поблагодарили: 204 раза
Контактная информация:

синк определенной папки

#2

25 мар 2021, 11:32

${beginPwd:11}"
что-то не вижу определения переменой beginPwd в сценарии
Basic (ZXSpectrum)→Ms-Dos→W95→W98→Me→XP→W7→Ubuntu 15.10→Xubuntu 16.04→Linux Mint 18.2-21.1
Контекстное меню Nemo
Сценарий вывода данных оценки ресурса диска SSD

Аватара пользователя

Автор темы
broken
Сообщения: 341
Зарегистрирован: 01 сен 2016, 01:45
Решено: 3
Благодарил (а): 19 раз
Поблагодарили: 14 раз
Контактная информация:

синк определенной папки

#3

25 мар 2021, 11:37

demonlibra, точно! Спасибо! Забыл про него!

Аватара пользователя

demonlibra
Сообщения: 844
Зарегистрирован: 12 авг 2017, 09:09
Решено: 13
Откуда: Ростов-на-Дону
Благодарил (а): 29 раз
Поблагодарили: 204 раза
Контактная информация:

синк определенной папки

#4

25 мар 2021, 11:47

Вы затёрли содержимое "/media/dma/5TB/hardD/"?
Basic (ZXSpectrum)→Ms-Dos→W95→W98→Me→XP→W7→Ubuntu 15.10→Xubuntu 16.04→Linux Mint 18.2-21.1
Контекстное меню Nemo
Сценарий вывода данных оценки ресурса диска SSD

Аватара пользователя

Автор темы
broken
Сообщения: 341
Зарегистрирован: 01 сен 2016, 01:45
Решено: 3
Благодарил (а): 19 раз
Поблагодарили: 14 раз
Контактная информация:

синк определенной папки

#5

25 мар 2021, 11:49

demonlibra, да :dash2:
Но я понял почему )
Уже значит 2 ошибочных момента было в скрипте :)

Аватара пользователя

demonlibra
Сообщения: 844
Зарегистрирован: 12 авг 2017, 09:09
Решено: 13
Откуда: Ростов-на-Дону
Благодарил (а): 29 раз
Поблагодарили: 204 раза
Контактная информация:

синк определенной папки

#6

25 мар 2021, 11:54

rsync отличное решение для синхронизации по расписанию.
Рекомендую обратить внимание на программу freefilesync, которая позволяет выполнять синхронизацию "не вслепую".
Basic (ZXSpectrum)→Ms-Dos→W95→W98→Me→XP→W7→Ubuntu 15.10→Xubuntu 16.04→Linux Mint 18.2-21.1
Контекстное меню Nemo
Сценарий вывода данных оценки ресурса диска SSD

Аватара пользователя

Автор темы
broken
Сообщения: 341
Зарегистрирован: 01 сен 2016, 01:45
Решено: 3
Благодарил (а): 19 раз
Поблагодарили: 14 раз
Контактная информация:

синк определенной папки

#7

25 мар 2021, 13:58

Итоговый вариант получился такой

Код: Выделить всё

#!/bin/bash

newPwd="/media/dma/5TB/hardD/"

bPwd=`pwd`
cbPwd="$bPwd/"
#echo -ne "${beginPwd:11}"

newnewPwd="$newPwd${cbPwd:11}"
#echo -ne "$newnewPwd"

rsync -rlstvupx --delete --progress "$cbPwd" "$newnewPwd"
Проверил, работает!
Опять же для конкретно моего случая!!!

Аватара пользователя

Автор темы
broken
Сообщения: 341
Зарегистрирован: 01 сен 2016, 01:45
Решено: 3
Благодарил (а): 19 раз
Поблагодарили: 14 раз
Контактная информация:

синк определенной папки

#8

25 мар 2021, 14:41

А как бы сделать чтоб оно еще экранировало пробел в пути при получении от pwd?

Аватара пользователя

demonlibra
Сообщения: 844
Зарегистрирован: 12 авг 2017, 09:09
Решено: 13
Откуда: Ростов-на-Дону
Благодарил (а): 29 раз
Поблагодарили: 204 раза
Контактная информация:

синк определенной папки

#9

25 мар 2021, 14:47

Вы же сами "экранировали" результат cbPwd="$bPwd/"
Или я не понял вопроса и требуется пояснение.
Что и зачем нужно сделать? И с какой проблемой боремся?
Basic (ZXSpectrum)→Ms-Dos→W95→W98→Me→XP→W7→Ubuntu 15.10→Xubuntu 16.04→Linux Mint 18.2-21.1
Контекстное меню Nemo
Сценарий вывода данных оценки ресурса диска SSD

Аватара пользователя

Автор темы
broken
Сообщения: 341
Зарегистрирован: 01 сен 2016, 01:45
Решено: 3
Благодарил (а): 19 раз
Поблагодарили: 14 раз
Контактная информация:

синк определенной папки

#10

25 мар 2021, 14:49

Код: Выделить всё

dma@dma-work:~$ cd Рабочий\ стол/
dma@dma-work:~/Рабочий стол$ pwd
/home/dma/Рабочий стол
dma@dma-work:~/Рабочий стол$ 
вот я о чем...
Для команды нужно чтоб было \

Аватара пользователя

rogoznik
Сообщения: 10044
Зарегистрирован: 27 июн 2017, 13:36
Решено: 129
Откуда: Нижний Тагил
Благодарил (а): 776 раз
Поблагодарили: 1958 раз
Контактная информация:

синк определенной папки

#11

25 мар 2021, 14:52

Код: Выделить всё

nick ~                                                                                                                                            
▶ a="Рабочий стол"         

nick ~                                                                                                                                            
▶ cd $a     

nick ~/Рабочий стол                                                                                                                               
▶ a="$(pwd)"      

nick ~/Рабочий стол                                                                                                                               
▶ echo $a
/home/nick/Рабочий стол

nick ~/Рабочий стол                                                                                                                               
▶ cd / 

nick /                                                                                                                                            
▶ cd $a

nick ~/Рабочий стол                                                                                                                               
▶ 
ИзображениеИзображение

Аватара пользователя

demonlibra
Сообщения: 844
Зарегистрирован: 12 авг 2017, 09:09
Решено: 13
Откуда: Ростов-на-Дону
Благодарил (а): 29 раз
Поблагодарили: 204 раза
Контактная информация:

синк определенной папки

#12

25 мар 2021, 14:53

Я не понимаю, что и зачем Вы это делаете :cray2:

Не знал, что так можно cd Рабочий\ стол/
Всегда писал cd "Рабочий стол"
Последний раз редактировалось пользователем 2 demonlibra; всего редактировалось раз: 25
Basic (ZXSpectrum)→Ms-Dos→W95→W98→Me→XP→W7→Ubuntu 15.10→Xubuntu 16.04→Linux Mint 18.2-21.1
Контекстное меню Nemo
Сценарий вывода данных оценки ресурса диска SSD

Аватара пользователя

Автор темы
broken
Сообщения: 341
Зарегистрирован: 01 сен 2016, 01:45
Решено: 3
Благодарил (а): 19 раз
Поблагодарили: 14 раз
Контактная информация:

синк определенной папки

#13

25 мар 2021, 14:54

demonlibra, понял ) решу кавычками. Спасибо!

Аватара пользователя

Chocobo
Сообщения: 10015
Зарегистрирован: 27 авг 2016, 22:57
Решено: 215
Откуда: НН
Благодарил (а): 815 раз
Поблагодарили: 3010 раз
Контактная информация:

синк определенной папки

#14

25 мар 2021, 14:55

broken,

Код: Выделить всё

➜  Рабочий стол:  pwd | sed 's/ /\\ /g'  
/home/chocobo/Рабочий\ стол
Изображение
   
Изображение

Аватара пользователя

demonlibra
Сообщения: 844
Зарегистрирован: 12 авг 2017, 09:09
Решено: 13
Откуда: Ростов-на-Дону
Благодарил (а): 29 раз
Поблагодарили: 204 раза
Контактная информация:

синк определенной папки

#15

25 мар 2021, 15:01

Еще вот эта конструкция ${cbPwd:11} попахивает отсутствием "универсальности".
Basic (ZXSpectrum)→Ms-Dos→W95→W98→Me→XP→W7→Ubuntu 15.10→Xubuntu 16.04→Linux Mint 18.2-21.1
Контекстное меню Nemo
Сценарий вывода данных оценки ресурса диска SSD

Аватара пользователя

Автор темы
broken
Сообщения: 341
Зарегистрирован: 01 сен 2016, 01:45
Решено: 3
Благодарил (а): 19 раз
Поблагодарили: 14 раз
Контактная информация:

синк определенной папки

#16

25 мар 2021, 15:35

Chocobo, в теле скрипта почему-то не хочет...

Код: Выделить всё

dma@dma-work:~/Рабочий стол$ cat test.sh 
bPwd=`pwd | sed 's/ /\\ /g'`

echo "$bPwd"
dma@dma-work:~/Рабочий стол$ bash test.sh
/home/dma/Рабочий стол
dma@dma-work:~/Рабочий стол$ 

Аватара пользователя

Chocobo
Сообщения: 10015
Зарегистрирован: 27 авг 2016, 22:57
Решено: 215
Откуда: НН
Благодарил (а): 815 раз
Поблагодарили: 3010 раз
Контактная информация:

синк определенной папки

#17

25 мар 2021, 15:48

broken, echo откидывает символы экранирования при выводе на экран
с тем же cd должно сработать. Ну и как выше указали, кавычки - тоже должны прокатить, тут уже на твое усмотрение)
Изображение
   
Изображение

Аватара пользователя

Автор темы
broken
Сообщения: 341
Зарегистрирован: 01 сен 2016, 01:45
Решено: 3
Благодарил (а): 19 раз
Поблагодарили: 14 раз
Контактная информация:

синк определенной папки

#18

25 мар 2021, 15:50

с кавычками вообще какая-то лажа выходит...
Но буду пробовать

Аватара пользователя

slant
Сообщения: 4506
Зарегистрирован: 21 июн 2017, 18:09
Решено: 99
Благодарил (а): 51 раз
Поблагодарили: 1993 раза
Контактная информация:

синк определенной папки

#19

25 мар 2021, 15:55

broken, использовать относительные пути вообще, и pwd в частности в сценариях cron - ОЧЕНЬ плохая практика. Чреватая огромным количеством неприятностей, особенно в сочетании с такими вещами как rsync в режиме полной синхронизации.

Хотите спокойной жизни - используйте абсолютные пути.

А еще у вас принципиальная логическая ошибка в сценарии - не задан текущий каталог явным образом перед использованием pwd. Когда сценарий запускается cron'ом это дает неопределенность, т.к. рабочим каталогом может оказаться совсем не тот, на который вы рассчитываете.

Если же этот сценарий не для cron - тогда опишите желаемую логику работы, а то видится мне здесь очередное переусложнение простой задачи...

Аватара пользователя

Автор темы
broken
Сообщения: 341
Зарегистрирован: 01 сен 2016, 01:45
Решено: 3
Благодарил (а): 19 раз
Поблагодарили: 14 раз
Контактная информация:

синк определенной папки

#20

25 мар 2021, 16:14

slant, запускаться будет не кроном. Вручную. Т.е. зашел в папку - открыть здесь консоль - написал алиас и выполняется.
Конечно, я посмотрю на вариант предложенный синк определенной папки (Пост demonlibra #113758)
Но в нем по мне слишком много мышетыканья... А тут.... надумал засинкать бац и готово! Хард внешний один и тот же. Соответственно часть пути не меняется, поэтому я ее и урезаю. И конечный путь складывается из пути подключаемого девайса + часть текущего пути.

Закрыто

Вернуться в «Программирование, скриптинг, виртуализация»

Кто сейчас на конференции

Сейчас этот форум просматривают: нет зарегистрированных пользователей и 4 гостя