Я не уверен, так как у меня не так много языков, установленных в бутоне, вы проверили инструменты -> надстройки -> Языки раздела. вы можете отключить требуемые языки?
Рассмотрение вопроса: «rsync имеет только метаданные для копирования, так почему это так медленно и как я могу сделать это быстрее?»:
rsync обычно использует равные mtimes в качестве эвристики для обнаруживать и пропускать неизменные файлы. Без --archive (в частности, без --times) файлы целевых файлов остаются установленными на время, когда вы их rsync-ed, в то время как файлы исходных файлов остаются неповрежденными (игнорируя ручную обманку вами). Без внешних гарантий от вас, что содержимое исходных файлов не изменилось, rsync должен предположить, что они могут иметь и, следовательно, должны проверять их и / или копировать их в пункт назначения снова. Это, плюс тот факт, что --whole-file подразумевается для локальных-> локальных синхронизаций, делает rsync без --times приблизительно эквивалентным cp для локальных синхронизаций.
Если обновление содержимого целевых файлов приемлемо или исходные файлы нетронуты с оригинальной копии, вы должны найти rsync --archive --size-only быстрее, чем наивный rsync.
Если в сомнении относительно того, что rsync копирует, что занимает так много времени, rsync --archive --dry-run --itemize-changes ... сообщает вам исчерпывающие, если краткие детали.
ПРЕДУПРЕЖДЕНИЕ. Без специальных обходных путей GNU cp --attributes-only усекает файлы назначения, по крайней мере, в Precise. См. Править ниже.
ПРЕДУПРЕЖДЕНИЕ. Без специальных обходных путей GNU cp --attributes-only усекает файлы назначения, по крайней мере, в Precise. См. Править ниже.
В этой ситуации вам, вероятно, понадобится опция --attributes-only GNU cp вместе с --archive, поскольку она проверена и проверена кодом, делает все атрибуты агностики в файловой системе и не делает : cp --archive --attributes-only /source/of/failed/backup/. /destination/
Как и в случае с файлами, cp является аддитивным с расширенными атрибутами: если оба источника и получателя имеют расширенные атрибуты, он добавляет расширенные атрибуты источника к месту назначения (вместо того, чтобы сначала удалить все назначения xattrs адресата). Хотя это отражает то, как cp ведет себя, если вы копируете файлы в существующее дерево, возможно, это не так, как вы ожидаете.
Также обратите внимание, что если вы не сохранили жесткие ссылки в первый раз с rsync но хочу сохранить их сейчас, тогда cp не исправит это для вас; вам, вероятно, лучше всего переиграть rsync с правильными параметрами (см. мой другой ответ) и быть терпеливым.
Если вы обнаружили, что этот вопрос, глядя на , не будет разделять и рекомбинировать содержимое метаданных / файлов, тогда вы можете взглянуть на другой ответ который находится в репозиториях Ubuntu.
Источник: GNU coreutils manual
добавляет
cp из GNU coreutils> = 8.17 и выше будет работать, как описано, но coreutils & lt; = 8.16 будет обрезать файлы при восстановлении их метаданных. Если вы сомневаетесь, не используйте cp в этой ситуации; использовать rsync с GNU coreutils manual и / или быть терпеливым.
Я бы не рекомендовал это, если вы не полностью понимаете, что делаете, но ранее GNU cp может быть предотвращено усечение файлов с помощью трюка LD_PRELOAD:
/*
* File: no_trunc.c
* Author: D.J. Capelis with minor changes by Zak Wilcox
*
* Compile:
* gcc -fPIC -c -o no_trunc.o no_trunc.c
* gcc -shared -o no_trunc.so no_trunc.o -ldl
*
* Use:
* LD_PRELOAD="./no_trunc.so" cp --archive --attributes-only <src...> <dest>
*/
#define _GNU_SOURCE
#include <dlfcn.h>
#define _FCNTL_H
#include <bits/fcntl.h>
extern int errorno;
int (*_open)(const char *pathname, int flags, ...);
int (*_open64)(const char *pathname, int flags, ...);
int open(const char *pathname, int flags, mode_t mode) {
_open = (int (*)(const char *pathname, int flags, ...)) dlsym(RTLD_NEXT, "open");
flags &= ~(O_TRUNC);
return _open(pathname, flags, mode);
}
int open64(const char *pathname, int flags, mode_t mode) {
_open64 = (int (*)(const char *pathname, int flags, ...)) dlsym(RTLD_NEXT, "open64");
flags &= ~(O_TRUNC);
return _open64(pathname, flags, mode);
}
В локальных передачах, когда источник и получатель находятся на локально смонтированных файловых системах, rsync всегда копирует содержимое всех файлов. Чтобы этого избежать, вы можете использовать
rsync -a --no-whole-file source dest
Мне пришлось сделать это удаленно на другом компьютере, поэтому я не мог использовать --reference
Я использовал это, чтобы создать скрипт ...
find -printf "touch -d \"%Tc\" \"%P\"\n" >/tmp/touch.sh
Но убедитесь, что в нем нет ни одного имени файла с "в них ...
find | grep '"'
Затем скопируйте touch.sh на свой удаленный компьютер и run ...
cd <DestinationFolder>; sh /tmp/touch.sh
В find -printf также есть опции для печати пользователя, имени группы, если вы хотите скопировать их.