3

Короче говоря, системные администраторы перенесли меня на новый почтовый сервер. При этом им нужно было создать отдельную учетную запись в Thunderbird и отключить мою старую учетную запись. Они позаботились обо всей миграции почты.

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

Я попытался закрыть Thunderbird, выполнить поиск / замену в virtualFolders.dat в моей папке профиля Thunderbird, сохранить этот файл и снова открыть Thunderbird, но, похоже, ничего не помогло. Я предполагаю, что папки поиска также сохраняются в одной из баз данных sqlite ... кто-нибудь знает, где искать?

2 ответа2

2

Несколько заметок:

  • Thunderbird, очевидно, не удаляет сохраненные поиски на диске даже после удаления их в пользовательском интерфейсе, поэтому в папке IMAP для старого сервера было полно старых MSF-файлов для поисков, которые я больше не использовал (поэтому я воспользовался этой возможностью, чтобы не мигрировать те)
  • В какой-то момент Thunderbird изменил соглашение об именах файлов с «Foo% 20Bar.msf» на «Foo Bar.msf», поэтому у меня было несколько дубликатов (один устаревший) с момента, когда произошла миграция (вероятно, Thunderbird 2.x -> 3). .Икс?)
  • В моем случае сохраненные поиски хранятся в представлении верхнего уровня, а не в папке "Входящие", поэтому они отображаются в ImapMail/server/save-search.msf.
  • Сохраненные файлы поиска невелики, но содержат ссылки на старое имя хоста, которое мне нужно найти / заменить
  • После переноса MSF-файлов, проверки их в Thunderbird и выхода из него файл virtualFolders.dat был обновлен (что объясняет, почему редактирование этого файла ничего не сделало и просто было перезаписано).

Вот команда, которую я запустил, когда Thunderbird не запущен, чтобы перенести сохраненный поиск .msfs. Извиняюсь за плохую упаковку:

find ImapMail/oldserver/*.msf -size -5k -and -not -name "*%20*" -and -not -name "Trash.msf" -print0 | xargs -0 perl -e 'foreach $path (@ARGV) { $path =~ /.*\/([^\/]+)/; $filename = $1; print "sed 's/oldserver/newserver/g' \"$path\" > \"ImapMail/newserver/$filename\"\n"; }' | sh

Обратите внимание, что аргументы для find наиболее вероятны в вашей ситуации; У меня было несколько фильтров для удаления неиспользуемых, но не совсем удаленных старых сохраненных поисков; фильтр по размеру и игнорирование Trash.msf необходим только потому, что я сохраняю поиски на верхнем уровне с другими не виртуальными папками.

Я понимаю, что, вероятно, есть несколько способов сделать это многофайловое обнаружение / замена и копирование, но этот метод - мое предпочтение, так как он обрабатывает экранирование имен файлов, и я могу проверить, что сопоставляется в каждой точке, где команды соединены конвейером ,

Вам придется заменить аргументы пути oldserver и newserver в вызове sed а также в путях ввода и вывода. Обратите внимание на регулярное выражение Perl, которое эффективно делает базовое имя.

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

1

После создания сохраненного поиска с бессмысленным именем (то есть что-то, что вряд ли будет отображаться в моей почте), я нашел следующие ссылки на него в каталоге моего профиля:

В соответствии со статьей MozillaZine Phantom Folders , panacea.dat можно безопасно удалить, и он будет воссоздан автоматически.

Также, согласно этой странице, похоже, что MSF-файл необходим для сохраненного поиска. Попробуйте скопировать этот файл из старого профиля, и все будет готово.

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