Когда я копирую файл через Nautilus, его эмблема или значок сохраняются, но если я делаю это с помощью cp
или rsync
через CLI, это не так. Почему и как это исправить?
Под сохранением я подразумеваю, что значки, которые я изменил вручную, остаются такими же, как при копировании через Nautilus, и в противном случае сбрасываются на значки по умолчанию при копировании через CLI.
Попробуйте использовать rsync с флагом архива:
rsync -av <source> <dest>
Возможно, что nautilus сохраняет разрешения, такие как исполняемый файл и rsync & amp; ср, если не сказано, нет.
ПОЧЕМУ: Эмблемы не являются частью самого файла, они хранятся где-то внутри Gnome - когда вы копируете файлы, используя Nautilus, он может обновлять метаданные в Gnome, потому что Nautilus - это Gnome приложение и знает о существовании этикеток и эмблем.
cp
, rsync
и другие команды не-Gnome, с другой стороны, ничего не знают о ярлыках и эмблемах и ничего не могут сделать для их сохранения.
КАК ИСПРАВИТЬ: Не может быть хорошего способа исправить это для каждой утилиты командной строки, которая копирует файлы. Для некоторых выбранных команд, таких как cp
, вы можете посмотреть на написание некоторых оболочек, которые устанавливают эмблемы целевых файлов в соответствии с эмблемами исходных файлов. Этот пост может дать вам несколько советов о том, как устанавливать эмблемы из командной строки
Я написал небольшой скрипт на Perl, который решает эту проблему, metasave . Он сохраняет метаданные nautilus в виде сценария оболочки, который необходимо запустить в целевой системе.
Если вы хотите скопировать файлы в командной строке и сохранить их метаданные, вам нужно использовать gvfs-copy
, замену Gnome на cp
.