Низкоуровневое форматирование означает много разных вещей для различных людей и на различных контекстах.
Исходное значение было шагом, необходимым в форматировании дисков - дисководам нужны заголовок, синхронизация и другие шаблоны, записанные на медиа, прежде чем это сможет хранить данные к нему. Таким образом голова может обнаружить, когда это A) на дорожке и B) где это находится на дорожке. Низкий уровень, форматирующий дискету, готовит диск, чтобы смочь считать и записать блоки. Ранний MFM и жесткие диски ПК RLL могли быть отформатированным низким уровнем, часто с помощью утилиты, встроенной в контроллер жесткого диска (карта ISA) ROM. Современный IDE и жесткие диски с интерфейсом SATA являются низким уровнем, отформатированным также, но только на фабрике.
Различные другие значения включают нули записи во все блоки, конфигурирование диска отключить "скрытые" области, такие как HPA и DCO и затем обнуление всех блоков или других вещей, более связанных с разделением, чем форматирование.
Необработанной флэш-памяти нужен другой начальный предварительный шаг на фабрике - каждая флэш-память "eraseblock" (аналогичный "блоку" на дисках) должна быть протестирована и отмечена как плохая, если это действительно плохо. Каждый "eraseblock" имеет дополнительный маленький блок "OOB", который содержит информацию с коррекцией ошибок - и это - то, где это отмечено как плохое. Вы НЕ хотите повторять этот шаг, поскольку действие записи в сбойный блок могло препятствовать тому, чтобы Вы установили тот конкретный бит снова, который идентифицирует его как плохой.
Но Вы не имеете дело с необработанной флэш-памятью. Вы имеете дело с картой флэш-памяти с интерфейсом USB. Существует чип контроллера во всех флеш-накопителях, который принимает команды USB от хоста и говорит с необработанной флэш-памятью внутри от имени хоста. Некоторые из этих чипов контроллера могут быть настроены для создания отчетов о части флэш-памяти как отдельный раздел CD-ROM или действие как два отдельных устройства хранения USB. В зависимости от делания и модели чипа контроллера, Вы можете находить восстановление или средство конфигурирования (только вероятный Windows), который мог сбросить этот чип контроллера. Вы начали бы путем открытия флеш-накопителя, поиска меньших из (вероятных) двух микросхем, которые находятся на маленьком PCB и выполнении некоторого поиска с помощью Google. Делание и модель, распечатанная за пределами случая, вряд ли помогут Вам найти, кто сделал контроллер в нем.
(Я использую связку ключей, таким образом, я не должен вводить пароль и т.д....),
Хорошо, таким образом, необходимо сказать программу, работающую в задании крона, как найти связку ключей.
SSH ищет агент SSH (который связка ключей эмулирует) через переменную среды SSH_AUTH_SOCK
. Таким образом, необходимо установить эту переменную среды в crontab.
В типичной конфигурации, SSH_AUTH_SOCK
путь к сокету со случайным именем. Так как Вы используете связку ключей, можно легко найти альтернативное название для того сокета: связка ключей пишет файлы в ~/.keychain
это содержит объявления переменной среды, которые устанавливают SSH_AUTH_SOCK
и другие подобные переменные (SSH_AGENT_PID
, GPG_AGENT_INFO
). Поэтому просто включайте соответствующий файл в свое задание крона.
MAILTO=user+rpibackup@gmail.com
30 5 * * * . ~/.keychain/$(hostname)-sh; /home/user/backup.sh
(В стороне: крон имеет встроенную функцию для отправки почты с выводом задания, таким, что Вы получаете почту, только если задание действительно производит некоторый вывод. Никакая потребность играть с | mail
.)
Соединение SSH не работает от cronjob. Как это, как предполагается, выполняет аутентификацию SSH? Никакая попытка перечислить ключ идентификационных данных или пароль не видима. Я продолжил бы работать '-i' с путем к Вашему (unpassworded...) ключ, если это то, как его работа. Основные отличия между командной строкой и cronjob имеют тенденцию быть до среды (обе вещи как переменные среды, отсутствие терминала управления и т.д.)
Я думаю, что у Вас есть проблема заключения в кавычки на Вашем предмете:
mail -s "Backup RPi "$(date +\%d/\%m/\%Y-\%X) user+rpibackup@gmail.com
Должно быть это:
mail -s "Backup RPi $(date +\%d/\%m/\%Y-\%X)" user+rpibackup@gmail.com
Я перенес бы электронную почту в сценарий также.
#!/bin/bash
(
echo "_ backup start "$(date +%H:%M:%S)
echo " "
/usr/bin/rsync -avh --rsync-path='/usr/bin/rsync' --delete \
--log-file='/home/user/rsync.'$(date +%d%m%Y-%H%M%S)'.log' \
--rsh='ssh -p 1234' user@server.com:/path/to/archives/ /media/backup/
echo " "
echo "_ backup end "$(date +%H:%M:%S)
) | mail -s "Backup RPi $(date +\%d/\%m/\%Y-\%X)" user+rpibackup@gmail.com
Затем измените crontab запись в это:
30 5 * * * /home/user/backup.sh
Также удостоверьтесь, что учетная запись, которая выполняет этот крон, может на самом деле послать электронное письмо. Сделайте тест.