Dec. 27th, 2023

tengu_crow: (Default)
Как синхронизировать диктофон и плейер с десктопом? Если с телефоном проблем не возникает - см syncthing, который всех и вся оставляет далеко за флагом, то с плейером (аудиокниги, подкасты и языковые уроки) и диктофоном (мои аудиозаметки) все не так просто.

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

Первое, что я определил для себя - синхронизация должна происходить в автоматическом или почти автоматическом режиме. Не хочу думать о том, что и как перезаписывать. Вставил, синхронизировал, вытащил, пользуюсь.

Отсюда следующий принцип: файлы скрипта синхронизации “приходят” вместе с носителем. То есть я не ищу ничего на диске или в меню - скрипт лежит там же, где папки, которые он синхронизирует. То, что диск может быть в fat32 файловой системе (хотя я стараюсь этого избегать) меня не останавливает. Я просто открываю терминал в этой папке и набираю:

bash sync.sh

И бум! Все остальное случается само собой.

Вопрос в том, как построить sync.sh

С плейером, который синхронизируется “в одну сторону” все оказалось довольно просто:

#!/bin/bash

# abook
rsync --progress --size-only --update --recursive --times \
    --ignore-errors --max-size=4GB \
    --delete \
    ~/av/mp3/001_redmi_mp3/001_abook/ ./1_abook

# pod 
rsync --progress --size-only --update --recursive --times \
    --ignore-errors --max-size=4GB \
    --delete \
    ~/av/mp3/001_redmi_mp3/002_pod/ ./2_pod

# lingvo
rsync --progress --size-only --update --recursive --times \
    --ignore-errors --max-size=4GB \
    --delete \
    ~/av/mp3/001_redmi_mp3/003_lingvo/ ./3_lingvo

# albums 
rsync --progress --size-only --update --recursive --times \
    --ignore-errors --max-size=4GB \
    --delete \
    ~/av/mp3/001_redmi_mp3/albums/ ./albums

# albums_tor
rsync --progress --size-only --update --recursive --times \
    --ignore-errors --max-size=4GB \
    --delete \
    ~/av/mp3/001_redmi_mp3/albums_tor/ ./albums_tor
sync

Выглядит большим, но это потому, что я поленился использовать функции.. у меня четыре папки на десткопе, которые я хочу синхронизировать, остальное тут однотипное.

Используется rsync который синхронизирует все нужные директории с папкой плейера. Ключ --delete говорит rsync что папки, которые удалены на десктопе, нужно удалять и на плейере.

Пути для rsync заданы относительно текущей папки скрипта (например ./1_abook), поэтому его можно универсально перекладывать на разные папки для разных плейеров (например) и каждый раз после запуска он будет воспроизводить и после этого синхронизировать одинаковую структуру папок.

Интересная подробность - Sansa Clip Plus вполне себе кушает 32Гб карточку, чего хватает больше чем с головой.

С диктофоном все получилось сложнее. У него не односторонняя связь, а двусторонняя. Я обычно надиктовываю что-то на ходу, а разбираю записи уже на десктопе, удаляя неважное или неактуальной и складывая в основную систему те файлы, которые хочу сохранить. Тут односторонним rsync не отделаешься, поэтому используется unison в batch режиме (чтобы не докучал вопросами что и куда складывать).

#! /bin/bash

unison -batch ./VOICE/ ~/av/dict/0_inbox
sync

Оба скрипта заканчиваются командой sync которая сбрасывает буфера, точнее “…который вызывает запись всех буферизованных изменений метаданных файлов и данных в базовые файловые системы. Он гарантирует, что все, что хранилось в памяти, будет записано на диск, предотвращая потерю данных, хранящихся в кеше, при аварийном завершении работы”.

June 2025

S M T W T F S
123456 7
891011121314
15161718192021
22232425262728
2930     

Most Popular Tags

Style Credit

Expand Cut Tags

No cut tags
Page generated Jul. 7th, 2025 12:53 am
Powered by Dreamwidth Studios