Я добавляю еще один ответ на этот вопрос, потому что в моем случае не было запущенного процесса systemd-sleep
, но я не мог остановка, выключение, выключение и перезагрузка моей машины. (Я думаю, что такое поведение является еще одним доказательством того, что systemd
полностью квалифицируется как вредоносное ПО , но давайте оставим это обсуждение на другой раз.)
В конце концов, я обратился к Ядро за помощь в борьбе с systemd
. Следующее не сильно отличается от аппаратной перезагрузки (нажатие кнопки питания), но может помочь, если у вас нет физического доступа к машине:
echo 1 > /proc/sys/kernel/sysrq
echo b > /proc/sysrq-trigger
После перезагрузки выполните уничтожение порождения ада.
@gudmundur -Орн ответил правильно, но если вы используете BtrFS в Linux, то cp a --reflink=auto dirA dirB
должно помочь, с той разницей, что файлы на самом деле разные, и изменение одного не меняет другого. Вы можете добиться в основном того же с cp -c
на Mac с APFS(auto
сделает полную копию, если это невозможно, -c
не удастся ).
Любая файловая система COW должна это делать, но поставщики не согласовали стандартную опцию командной строки.
rsync -av --link-dest="$PWD/dirA" dirA/ dirB
Если у вас уже установлено rsync
, это простая и быстрая команда. Чтобы справиться с символическими ссылками, вы можете выбрать между --links, --copy-links, --copy-unsafe-links
или--safe-links
На справочной странице rsync:
--link-dest=DIR hardlink to files in DIR when unchanged
-l, --links copy symlinks as symlinks
-L, --copy-links transform symlink into referent file/dir
--copy-unsafe-links only "unsafe" symlinks are transformed
--safe-links ignore symlinks that point outside the tree
Редактировать:
$ cd /tmp && rm -rf a b; mkdir a && touch a/c && echo "xxx" > a/c && rsync -av --link-dest="$PWD/a" a/ b;
$ ls -lR a b
building file list... done
created directory b
./
sent 74 bytes received 26 bytes 200.00 bytes/sec
total size is 4 speedup is 0.04
a:
total 8
-rw-r--r-- 2 user wheel 4 Aug 26 16:09 c
b:
total 8
-rw-r--r-- 2 user wheel 4 Aug 26 16:09 c