Страница 1 из 2
синк определенной папки
Добавлено: 25 мар 2021, 10:59
broken
Раньше синкал раздел целиком. Но подумал, что конкретную папку синкать будет удобней.
Написал это.
Код: Выделить всё
#!/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"
Создал в начальном пункте папку, в ней вложенные. Создал в конечном пункте папку, но без вложенных.. Запустил. Эта зараза
мне всё в конечном пункте посносила и оставила только ту папку, которую синкал
о_О
Подскажите, пожалуйста, где ошибся?
синк определенной папки
Добавлено: 25 мар 2021, 11:32
demonlibra
${beginPwd:11}"
что-то не вижу определения переменой beginPwd
в сценарии
синк определенной папки
Добавлено: 25 мар 2021, 11:37
broken
demonlibra, точно! Спасибо! Забыл про него!
синк определенной папки
Добавлено: 25 мар 2021, 11:47
demonlibra
Вы затёрли содержимое "/media/dma/5TB/hardD/"?
синк определенной папки
Добавлено: 25 мар 2021, 11:49
broken
demonlibra, да
Но я понял почему )
Уже значит 2 ошибочных момента было в скрипте

синк определенной папки
Добавлено: 25 мар 2021, 11:54
demonlibra
rsync
отличное решение для синхронизации по расписанию.
Рекомендую обратить внимание на программу
freefilesync, которая позволяет выполнять синхронизацию "не вслепую".
синк определенной папки
Добавлено: 25 мар 2021, 13:58
broken
Итоговый вариант получился такой
Код: Выделить всё
#!/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"
Проверил, работает!
Опять же для конкретно моего случая!!!
синк определенной папки
Добавлено: 25 мар 2021, 14:41
broken
А как бы сделать чтоб оно еще экранировало пробел в пути при получении от pwd?
синк определенной папки
Добавлено: 25 мар 2021, 14:47
demonlibra
Вы же сами "экранировали" результат cbPwd="$bPwd/"
Или я не понял вопроса и требуется пояснение.
Что и зачем нужно сделать? И с какой проблемой боремся?
синк определенной папки
Добавлено: 25 мар 2021, 14:49
broken
Код: Выделить всё
dma@dma-work:~$ cd Рабочий\ стол/
dma@dma-work:~/Рабочий стол$ pwd
/home/dma/Рабочий стол
dma@dma-work:~/Рабочий стол$
вот я о чем...
Для команды нужно чтоб было
\
синк определенной папки
Добавлено: 25 мар 2021, 14:52
rogoznik
Код: Выделить всё
nick ~
▶ a="Рабочий стол"
nick ~
▶ cd $a
nick ~/Рабочий стол
▶ a="$(pwd)"
nick ~/Рабочий стол
▶ echo $a
/home/nick/Рабочий стол
nick ~/Рабочий стол
▶ cd /
nick /
▶ cd $a
nick ~/Рабочий стол
▶
синк определенной папки
Добавлено: 25 мар 2021, 14:53
demonlibra
Я не понимаю, что и зачем Вы это делаете
Не знал, что так можно
cd Рабочий\ стол/
Всегда писал
cd "Рабочий стол"
синк определенной папки
Добавлено: 25 мар 2021, 14:54
broken
demonlibra, понял ) решу кавычками. Спасибо!
синк определенной папки
Добавлено: 25 мар 2021, 14:55
Chocobo
broken,
Код: Выделить всё
➜ Рабочий стол: pwd | sed 's/ /\\ /g'
/home/chocobo/Рабочий\ стол
синк определенной папки
Добавлено: 25 мар 2021, 15:01
demonlibra
Еще вот эта конструкция ${cbPwd:11}
попахивает отсутствием "универсальности".
синк определенной папки
Добавлено: 25 мар 2021, 15:35
broken
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:~/Рабочий стол$
синк определенной папки
Добавлено: 25 мар 2021, 15:48
Chocobo
broken, echo
откидывает символы экранирования при выводе на экран
с тем же cd должно сработать. Ну и как выше указали, кавычки - тоже должны прокатить, тут уже на твое усмотрение)
синк определенной папки
Добавлено: 25 мар 2021, 15:50
broken
с кавычками вообще какая-то лажа выходит...
Но буду пробовать
синк определенной папки
Добавлено: 25 мар 2021, 15:55
slant
broken, использовать относительные пути вообще, и pwd в частности в сценариях cron - ОЧЕНЬ плохая практика. Чреватая огромным количеством неприятностей, особенно в сочетании с такими вещами как rsync в режиме полной синхронизации.
Хотите спокойной жизни - используйте абсолютные пути.
А еще у вас принципиальная логическая ошибка в сценарии - не задан текущий каталог явным образом перед использованием pwd. Когда сценарий запускается cron'ом это дает неопределенность, т.к. рабочим каталогом может оказаться совсем не тот, на который вы рассчитываете.
Если же этот сценарий не для cron - тогда опишите желаемую логику работы, а то видится мне здесь очередное переусложнение простой задачи...
синк определенной папки
Добавлено: 25 мар 2021, 16:14
broken
slant, запускаться будет не кроном. Вручную. Т.е. зашел в папку - открыть здесь консоль - написал алиас и выполняется.
Конечно, я посмотрю на вариант предложенный
синк определенной папки (Пост demonlibra #113758)
Но в нем по мне слишком много мышетыканья... А тут.... надумал засинкать бац и готово! Хард внешний один и тот же. Соответственно часть пути не меняется, поэтому я ее и урезаю. И конечный путь складывается из пути подключаемого девайса + часть текущего пути.