rsync не работает между NTFS / FAT и EXT

Самый простой способ - поместить команду time перед запущенной командой. Например:

$ time locate display-auto
/etc/cron.d/display-auto-brightness
/home/rick/Downloads/display-auto-brightness
/home/rick/Pictures/display-auto-brightness conky.png
/home/rick/Pictures/display-auto-brightness systray.png
/home/rick/Pictures/display-auto-brightness-config 1.png
/home/rick/Pictures/ps display-auto-brightness.png
/lib/systemd/system-sleep/display-auto-brightness
/mnt/e/etc/cron.d/display-auto-brightness
/mnt/e/lib/systemd/system-sleep/display-auto-brightness
/mnt/e/usr/local/bin/display-auto-brightness
/usr/local/bin/display-auto-brightness

real    0m0.826s
user    0m0.803s
sys     0m0.016s

Мы используем команду locate для поиска всех имен файлов с display-auto в именах. Просто добавьте команду time перед командой.

Получение времени для части скрипта

Вы можете использовать переменную $SECONDS внутри вашей чтобы получить время для его части. Например:

SECONDS=0
/bin/egrep -v "^#|^$" $BLOCKEDIPS_XS | while IFS= read -r ip
do
    # Append everything to droplist
    $IPTABLES -A droplist -i eth0 -s $ip -j LOG --log-prefix " Drop IP List blockxs "
    $IPTABLES -A droplist -i eth0 -s $ip -j DROP
done <"$BLOCKEDIPS_XS"
timer stops, shows elapsed time
BlockTime=$SECONDS
echo "Total time to block IPs: $BlockTime Seconds"

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

1
задан 12 September 2012 в 21:44

4 ответа

Временные метки в FAT32 слишком отличаются от unix, чтобы полагаться на них, чтобы проверить изменения файлов, вы также должны использовать ключ -c, он заставит rsync сравнивать все файлы, чтобы обнаруживать изменения, а не полагаться на отметки времени.

Наконец, в вашей команде есть несколько параметров, которые не могут работать с файловыми системами FAT32.

-l сохранит ссылки, FAT32 не имеет понятия ссылок -p будет пытаться сохранить разрешение, опять же никаких разрешений на FAT32 -t не будет пытаться сохранить временные метки модификации, есть только одна метка времени на FAT32 -g будет пытаться сохранить групповое владение, опять же не поддерживаемое FAT32 -D будет пытаться зарезервировать специальные файлы и устройства, вы теперь то, что здесь происходит.

Как комментарии htorque, неверные параметры вам не повредит, они просто ничего не сделают. Но вы должны добавить ключ -c.

Это:

rsync -vrc source dest

должен работать (по крайней мере, он работает на моем компьютере).

10
ответ дан 25 May 2018 в 13:30

У меня была аналогичная проблема в OSX, и ответ Глутанамата не помог. Некоторые файлы отличаются на час; это может быть связано с тем, что я часто отношусь к часовым поясам относительно часто. Другие файлы отключены на день или даже месяц. Я не знаю, почему это так. [* D0]

В любом случае, похоже, что опция --size-only, которая сообщает rsync игнорировать временные метки, будет работать для моих целей. -c / --checksum (как упоминалось Хавьером) также работает, но занимает немного больше времени. Я приурочил его, и потребовалось около минуты, чтобы сравнить контрольные суммы для GB или так в подкаталоге, с которым я работаю. Конечно, скорость, с которой это происходит, будет зависеть от самого медленного привода в системе; в моем случае это SD-карта в моем телефоне. Однако это произошло после того, как я уже делал некоторые манипуляции с файлами (включая контрольные суммы), поэтому многие из файлов, возможно, уже были скопированы в кеш оперативной памяти.

2
ответ дан 25 May 2018 в 13:30

Вы также должны избегать использования популярной опции -a. Моя рекомендация FAT32 -

 rsync -vrc --delete --progress --no-p source  destination

- no-p: no permission

- удалить: удалить непревзойденные файлы и папку в пункте назначения (если вы действительно этого хотите)

- ход: показать ход во время передачи. Это хорошо для больших файлов.

1
ответ дан 25 May 2018 в 13:30
  • 1
    Имейте upvote от меня, хотя в дополнение к -vrc, я также делаю -vrcz – Antony 18 October 2016 в 02:43

Это слишком много флагов (-vrlptgD), которые вы используете. Помните, что rsync является утилитой Linux и не работает с Fat32 и NTFS эффективно.

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

Попробуйте:

rsync -rvh --size-only --progress --delete /path/to/ext4/ /path/to/fat32/

Подробнее здесь

0
ответ дан 25 May 2018 в 13:30

Другие вопросы по тегам:

Похожие вопросы: