2

Я установил dropbox на моем безголовом сервере 12.04, он правильно синхронизирован и настроен так, что я могу отправлять фотографии по электронной почте с помощью приложения sendtodropbox.com. Все они синхронизируются с папкой dropbox локально на моем хосте ~/Dropbox/Attachments/ .

Я хотел бы сделать две вещи:

  1. Я хотел бы иметь возможность отправить мои фотографии в Dropbox, а затем синхронизировать эти файлы с моим сервером.

  2. Затем скопируйте эти файлы в папку с хранилищем фотографий в блоге.

Проблемы, с которыми я сталкиваюсь:

  • Я могу сделать символическую ссылку на папку вне папки Dropbox (на папку репозитория фотографий моего блога), единственная проблема в том, что фотографии отправляются по электронной почте с одним именем файла photo.jpg (спасибо Apple!).

Это означает, что мне нужен скрипт bash для переименования файлов с именем photo.jpg во что-то уникальное, когда они создаются.

Это позволит мне загрузить более одной фотографии и определить, какие фотографии какие!

Я могу создать символическую ссылку достаточно просто, я просто изо всех сил пытаюсь найти решение, которое может изменить имена файлов в реальном времени, поскольку они синхронизируются через раскрывающийся список до h

2 ответа2

0

Самый простой способ сделать это - переименовать ваши файлы в cron. Предполагая, что вам не нужен мгновенный доступ к вашим фотографиям, и вы можете подождать минуту (посмотрите здесь, если нет).

  1. Создайте сценарий, который перемещает photos.jpg из папки Dropbox в ваш репозиторий, сохраняя его как year-month-day_hour_minutes_seconds.jpg . Создайте текстовый файл с именем move_photos.sh в вашем любимом текстовом редакторе и вставьте в него следующие строки:

    #!/bin/bash
    date=`date +%F"_"%H_%M_%S`;
    mv /Dropbox/Photos/photo.jpg /path/to/repo/$date.jpg
    

    Очевидно, замените /path/to/repo фактическим путем к вашему хранилищу.

  2. Сделайте скрипт исполняемым:

    $ chmod +x move_photos.sh
    
  3. Создать хронтаб

    $ crontab -e
    
  4. Добавьте эту строку в crontab:

    * * * * * ~/move_photos.sh
    
  5. Сохраните его и закройте окно редактора crontab.

Это приведет к тому, что скрипт move_photos.sh будет запускаться каждую минуту. Поскольку имя файла включает секунды, никогда не должно быть двух файлов с одинаковым именем.

0

Я нашел интересный инструмент под названием incron, поэтому настроил его, запустив sudo apt-get install incron . Проще говоря, incron это:

Эта программа представляет собой систему inotify cron. Он состоит из демона и настольного манипулятора. Вы можете использовать его так же, как обычный cron. Разница в том, что cron inotify обрабатывает события файловой системы, а не периоды времени.

Затем я создал простой скрипт bash:

#!/bin/bash
ls photo.JPG | while read a; do mv $a "$(echo "$a" | sed s/photo.JPG/"photo$(date +%a%b%d%H%M).jpg"/)"; done
mv photo* ~/Dropbox/Attachments /<photo repo>/

Я помещаю скрипт в ~/ , затем редактирую файл /etc/incron.allow чтобы включить мое имя пользователя, потому что все эти скрипты и файлы находятся в моем домашнем каталоге. Затем я должен отредактировать файл конфигурации incron, запустив incrontab -e .

Здесь я использовал ~/Dropbox/Attachments/ IN_MOVED_TO ~/script.sh (потому что действие файла Dropbox, входящего в каталог, является ходом)

Это работает мгновенно, когда я посылаю в свой Dropbox фотографию с моего телефона. Я также проверил incron как с root, так и с моим именем пользователя, чтобы убедиться, что он работает, мой первый тест как мой пользователь был: incrontab -e добавить конфигурацию: ~/ IN_CREATE touch ~/test , затем я иду в ~/ и запускаю >foo , и test появляется.

В противном случае, это должно работать просто отлично!

Всё ещё ищете ответ? Посмотрите другие вопросы с метками .