Можно сделать цикл по каталогам, которых Вы хотите создать резервную копию. Отметьте использование переменной err
отслеживать любую ошибку.
err=0
for d in ~/Documents ~/Pictures ~/Videos; do
if [ -d "$d" ]; then
ditto "$d" ~/BACKUP/"${d##*/}" || err=1
else
echo 1>&2 "Missing directory: $d"
err=1
fi
done
exit $err
С другой стороны, можно сделать функцию, которая обрабатывает один каталог и называет его многократно. Отметьте использование err
снова.
backup () {
if [ -d "$1" ]; then
ditto "$1" "$2" || err=1
else
echo 1>&2 "Missing directory: $1"
err=1
fi
}
err=0
backup ~/Documents ~/BACKUPS/Documents
backup ~/Pictures ~/BACKUPS/Pictures
backup ~/Videos ~/BACKUPS/Videos
Если файл может быть считан, он может быть скопирован. Можно, однако, мешать файлу быть удаленными или перемещенными, не давая полномочия записи каталогу, где файл находится.
Отредактированный с дополнительной информацией, так как вопрос был исправлен:
Учитывая сценарий Вы теперь добавили к вопросу, Вы могли сделать это:
guiuser
guiuser
guiuser
прочитал разрешениеguiuser
chmod u+s /GUI/program/GUI.exe
)Когда Ваши пользователи запустят программу, та программа будет иметь права доступа guiuser
, таким образом, программа сможет считать файлы даже при том, что у обычного пользователя нет разрешения.
Копирование не является волшебным: это просто читает файл и затем сохраняет то, что Вы считали где-то в другом месте. Так, по сути, если можно считать файл, можно скопировать его.
Однако в зависимости от того, что Вы делаете, Вы можете выполнять свою цель путем создания данных не читаемыми обычными пользователями и получили доступ только через специальную программу (в былые времена, setuid программу; в эти дни веб-приложение могло бы быть более соответствующим). Та программа скупо выдала бы биты данных по запросу и не целые файлы. Так как свойственная проблема остается, это не может предотвратить копирование, но это может сделать это более трудным, потому что у Вас может быть логика к запросам ограничения скорости или подобный. Или, можно представить данные в способом с потерями, вместо того, чтобы дать необработанную информацию. Например, если источник находится в HTML, отправьте представленный простой текст вместо этого. Решительный пользователь мог предположить и восстановить оригинал, но вряд ли получит точный результат.
Если Вы собираетесь отобразить те изображения, они должны быть читаемыми. Если они могут быть считаны, они могут быть скопированы, потому что копирование состоит из чтения чего-то и записи его в другом месте. Это идет, отображаете ли Вы их в пользовательском приложении или через сеть, как предложено mattdm. Когда веб-браузер отображает изображение, ему сначала нужно к загруженному (если бы он не загружал изображение, то он не знал бы, что отобразиться, в конце концов).
Можно предоставить программе дополнительные полномочия и сделать изображения доступными только с теми дополнительными полномочиями, как предложила Jenny D. Однако нет никакого шанса, что Вы сможете сделать это, не разрабатывая Ваше приложение, чтобы быть безопасными с нуля. Кроме того, у системного администратора был бы доступ к изображениям так или иначе.
Вы почти наверняка пытаетесь решить социальную проблему через технологию. Это известно для не работы. Заставьте своих пользователей подписать контракт, заявив, что они не скопируют изображения. Это называют лицензией.
Обновление: Мой Сценарий, Мы разработали программу GUI, которые имеют некоторые изображения, которые мы создали путем потребления партии времени и усилий.
Хорошо, поднимание с полномочиями файла и setuid () на Вашем приложении могло бы помешать обычным пользователям копировать изображения. Это не помешает действительно решительному человеку "красть" их все же. Gilles намекнул на это в комментарии к другому ответу.
Вы могли зашифровать .png
изображения на диске, и имеют Ваше приложение, дешифруют их перед использованием их непосредственно. Снова, не прекрасный, но вероятно более вероятно помешать им быть скопированными легко.
Но (вот плохие новости), любой с программой снимка экрана может просто захватить их от дисплея, когда Ваше собственное приложение использует их. После того как это находится на дисплее, это "stealable" снова. Даже если они не знают, как сделать экранный захват, если у них есть смартфон или камера, это доступно.
Лучшая надежда состоит в том, чтобы, вероятно, только поместить уведомления об авторском праве на изображения.
Не относительно копии. Инструменты, которые копируют файлы просто, читают их, и не было бы никакого пути к системе для сообщения, какова цель чтения.
Если Вы полностью не устраните возможность пользователя записать где угодно, довольно опытный пользователь найдет способ скопировать файл, если он или она может считать его.