То, что делает Вас, подразумевало под “несобственным компонентом”? Нет четкого определения “установленного по умолчанию”, так как каждое распределение имеет свой собственный набор по умолчанию установленных пакетов, и очень легко настроить тот набор.
Потоки POSIX являются частью GNU libc, который является фундаментальной частью любого, не встроил системы Linux (существуют замены для маленьких систем, я думаю, что главные также включают поддержку pthread). Само ядро Linux включает поддержку потоков. Это не точно pthread, но различие между тем, что поддерживается одним только ядром и что поддерживается стандартной библиотекой сверху ядра, редко полезно.
OpenMP проникает через GOMP, который является частью gcc. В отличие от стандартной библиотеки (Glibc), возможно иметь нормальную систему Linux без установленного libgomp.
Существует несколько реализаций MPI для Linux, включая MPICH и OpenMPI. Существуют нормальные системы Linux без тех, также.
Все в конечном счете реализовано сверх системных вызовов, т.е. функциональности, обеспеченной ядром. MP, MPI и другие библиотеки реализованы с точки зрения системных вызовов управления процессами, межпроцессного взаимодействия (каналы, сокеты, общая память, …) и многопоточность (блокировки, условия, …).
Можно сделать это использование
rsync -av --delete --update --include-from=LISTFILE -f 'hide,! */' src/ dst
где LISTFILE
файл, который содержит все файлы, которые должны синхронизироваться с целевым каталогом. Если Ваши файлы не изменяются, можно использовать --ignore-existing
вместо --update
. Прочитайте rsync страницу руководства для деталей.
Существует, много удаляют опции, которые можно использовать с rsync для удаления файлов на цели, если они не, существуют в источнике:
--del an alias for --delete-during
--delete delete extraneous files from dest dirs
--delete-before receiver deletes before xfer, not during
--delete-during receiver deletes during the transfer
--delete-delay find deletions during, delete after
--delete-after receiver deletes after transfer, not during
Кроме того, можно использовать --ignore-existing
для пропуска копирования файлов, которые существуют в цели:
--ignore-existing skip updating files that exist on receiver
И удалить пустые каталоги необходимо использовать:
-m, --prune-empty-dirs prune empty directory chains from file-list
Так, команда
rsync -av --prune-empty-dirs --delete-delay --ignore-existing src/ dst
сделает то, что Вы ищете, я предполагаю
Я думаю, что необходимо сфокусироваться на --delete-excluded
. Я попробовал его локально, и это, кажется, работает, как желаемый. Я запустил бы путем попытки
rsync -a --delete-excluded --include-from=LISTFILE --exclude="*" src/ dst
Я не уверен, почему определенные другие опции предлагаются :P. Самый "интересный" --ignore-existing
. Может стоить удостовериться, что Вы понимаете более дружественные оптимизации сначала - -a
, или -u
.
Похоже, что Вы уже используете -a
, который подразумевает -t
, который позволяет rsync оптимизировать по умолчанию. "Rsync находит файлы, которые должны быть переданы с помощью алгоритма "быстрой проверки" (по умолчанию), который ищет файлы, которые изменились в размере или в измененное в последний раз время". Если Вы не используете -a
, часто возможно использовать"-u
или --update
- пропустите файлы, которые являются более новыми на получателе".
Если Вы хотите сравнить различия с отключенной оптимизацией "быстрой проверки", можно использовать --checksum
. (Также полезно, если Вы хотите насильственно повторно синхронизировать все существующие файлы в какой-то момент в случае повреждения. Включить -v
и Вы сможете видеть, какие файлы должны были быть переписаны).