Вы можете открыть новое частное окно в Firefox (так же, как окно инкогнито Chrome) и использовать его одновременно с обычным браузером с разными учетными записями.
Вместо обычного rsync используйте rdiff-backup . Он автоматически обнаруживает и заменяет символы, которые не поддерживаются на целевом диске, а также откладывает их обратно, как при восстановлении в файловой системе unix. Он создает распакованный каталог, который похож на источник и один дополнительный каталог метаданных.
Самый простой подход - использовать уровень файловой системы для преобразования имен файлов. С Ubuntu 12.04 существует файловая система FUSE , которая преобразует имена файлов в имена, которые поддерживает VFAT Windows: fuse-posixovl
sudo mount.posixovl / media / sdb1 chown guillaume / media / sdb1 rsync -au ~ / mail / media / sbd1 /
Или во избежание использования root-доступа:
mkdir ~ / mnt /sbin/mount.posixovl -S / media / sdb1 ~ / mnt rsync -au ~ / mail ~ / mnt /
Персонажи в имена файлов, которые VFAT не принимает, кодируются как % (XX)
, где XX
- шестнадцатеричные цифры. Начиная с POSIXovl 1.2.20120215, будьте осторожны, что имя файла, такое как % (3A)
, закодировано как само, и будет декодировано как :
, поэтому существует риск столкновения если у вас есть имена файлов, содержащие подстроки формы % (XX)
.
Остерегайтесь того, что POSIXovl не справляется с длинными именами файлов. Если кодированное имя не соответствует 255 символам, файл не может быть сохранен.
POSIXovl сохраняет разрешения unix и права собственности в файлах с именем .pxovl.FILENAME
.
Следующий файл bash ≥4 script копирует ~ / mail / foo: bar
в / media / usb99 / mail / foo_bar
, и аналогично для всех файлы в разделе ~ / mail
. Файлы, которые уже существуют в дереве назначения и не старше источника, пропущены.
#! / Bin / bash set -e shopt -s dotglob globstar для источника в "$ HOME" / почта / ** / *; do target = / media / usb99 / $ {source # "$ HOME" /} target = $ {target //: / _}, если [[-d $ source]]; затем mkdir -p - "$ target" elif [[$ target -ot $ source]]; то cp -p - "$ source" "$ target" fi done
Этот скрипт работает под zsh с небольшими изменениями: замените shopt -s dotglob globstar
на setopt dot_glob
и [[$ target -ot $ source]]
by [[! -e $ target || $ target -ot $ source]]
.
Вот двухстрочный zsh (три, если вы считаете автозагрузки).
autoload zargs zmv zargs - ~ / mail / ** / * (/ e \ '' REPLY = / media / usb99 / $ { $ {REPLY # $ HOME /} //: / _} '\') - mkdir -p - zmv -C -Q -o -pu '~ / mail / (** /) (*) (.) '' / media / usb99 / mail / $ {1 //: / _} $ {2 //: / _} '
zargs
эквивалентно mkdir -p ~ / mail / ** / * (...)
, за исключением того, что он не будет бомбить, если кумулятивная длина имен каталогов слишком велика. Эта строка создает целевые каталоги по мере необходимости. ~ / mail / ** / * (/)
расширяется до всех каталогов в ~ / mail
(каталоги только из-за (/)
в конце). (/ e \ '' ... '\')
выбирает только каталоги и далее выполняет код внутри «...», чтобы преобразовать имя каждого файла, которое хранится в переменной REPLY
. $ {$ {REPLY # $ HOME /} / /: / _}
удаляет префикс, соответствующий исходному каталогу, и изменяет :
на _
. zmv -C
копирует каждый файл, соответствующий его первому операнду (шаблон zsh), к имени файла, полученному при расширении его второго операнда. -o -pu
говорит, чтобы пройти -pu
в утилиту cp
, чтобы сохранить разрешения и скопировать только обновленные файлы. (Мы могли бы сказать zsh выполнить проверку обновлений, это будет немного быстрее, но еще более загадочным.) (.)
выбирает только обычные файлы. -Q
говорит, что это нужно анализировать как квалификатор glob, а не как .
с круглыми скобками вокруг него, указывающими подвыражение. $ 1
и $ 2
в заменяющем тексте соответствуют заключенным в скобки выражениям (** /)
и *
. ( **
теряет свое особое значение как ноль или более уровней поддиректории, если оно находится в круглых скобках, если в круглых скобках не указано точно ** /
.) Первоначально я думал использовать pax , который является инструментом архивации (здесь предназначен для использования в сквозном режиме), который имеет функцию переименования файлов (ее -s
). Однако параметры -s
и -u
не работают вместе (определение pax POSIX буквально говорит о том, что -u
должен проверять файл с тем же именем в дереве назначения, а не на имя файла, преобразованное с помощью -s
, реализация pax в Ubuntu следует за спецификацией буквально, а не полезно). По-прежнему можно использовать его для переименования жестких ссылок, а затем скопировать жесткие ссылки (с помощью rsync -au
или pax -rw -pp -u
) на другие СМИ, но он чувствует больше проблем, чем это стоит.
cd ~ / mail mkdir -p / media / usb99 / mail pax -rw -l -pp -s '!:! _! г' . ../mail.colonless rsync -au ../mail.colonless/ / media / usb99 / mail /