Вики IT-KB

Пошаговые руководства, шпаргалки, полезные ссылки...

Инструменты пользователя

Инструменты сайта


apple-mac-os:macos-ventura:automatic-synchronization-of-files-and-directories-on-macos

Различия

Показаны различия между двумя версиями страницы.

Ссылка на это сравнение

Предыдущая версия справа и слеваПредыдущая версия
Следующая версия
Предыдущая версия
apple-mac-os:macos-ventura:automatic-synchronization-of-files-and-directories-on-macos [21.07.2023 10:05] Виталий Якобapple-mac-os:macos-ventura:automatic-synchronization-of-files-and-directories-on-macos [08.11.2023 20:41] (текущий) Виталий Якоб
Строка 2: Строка 2:
  
 {{:apple-mac-os:macos-monterey:pasted:20220323-155615.png }} Иногда возникает необходимость периодически синхронизировать какие-то рабочие файлы или каталоги со съёмным накопителем или сетевым ресурсом. В **macOS** подобную задачу можно автоматизировать. Например, при каждом монтировании съёмного накопителя с определённым именем раздела содержимое перечисленных каталогов будет синхронизировано с этим съёмным накопителем. {{:apple-mac-os:macos-monterey:pasted:20220323-155615.png }} Иногда возникает необходимость периодически синхронизировать какие-то рабочие файлы или каталоги со съёмным накопителем или сетевым ресурсом. В **macOS** подобную задачу можно автоматизировать. Например, при каждом монтировании съёмного накопителя с определённым именем раздела содержимое перечисленных каталогов будет синхронизировано с этим съёмным накопителем.
 +В данном примере выполняется синхронизация перечисленных каталогов в ~/Documents/Портфель.
  
-Сохраним **AppleScript** скрипт в расположении ''~/Library/Workflows/Applications/Folder Actions'' с именем ''Sync folder to removable disk.scpt''+Сохраним **AppleScript** скрипт в расположении ''~/Library/Scripts/Folder Action Scripts'' с именем ''Sync folder to removable disk.scpt''
  
  
 <code applescript Sync folder to removable disk.scpt> <code applescript Sync folder to removable disk.scpt>
 on adding folder items to this_folder after receiving MountedVolumes on adding folder items to this_folder after receiving MountedVolumes
- set SyncRootFolder to "Портфель" + set SyncRootFolder to "Портфель" 
- repeat with MountedVolume in MountedVolumes + repeat with MountedVolume in MountedVolumes 
- tell application "Finder" +  tell application "Finder" 
- --Имя раздела внешного диска +   --Имя раздела внешного диска 
- set RemovableDiskName to "Flash" +   set RemovableDiskName to "Flash" 
- if (local volume of disk MountedVolume) and (name of disk MountedVolume is RemovableDiskName) then +   if (local volume of disk MountedVolume) and (name of disk MountedVolume is RemovableDiskName) then 
- --Имена синхронизируемых каталогов +    --Имена синхронизируемых каталогов 
- set SyncFolders to {¬ +    set SyncFolders to {¬ 
- "Проект А", ¬ +     "Проект А", ¬ 
- "Проект Б", ¬ +     "Проект Б", ¬ 
- "Инструкции тех. поддержки", ¬ +     "Инструкции тех. поддержки", ¬ 
- "Test"+     "Test"
- repeat with SyncFolder in SyncFolders +    repeat with SyncFolder in SyncFolders 
- --Синхронизация +     --Синхронизация 
- my StartSync(SyncRootFolder, SyncFolder, RemovableDiskName) +     my StartSync(SyncRootFolder, SyncFolder, RemovableDiskName) 
- end repeat +    end repeat 
- --Раскомментировать, если необходимо отключать носитель после завершения синхронизации +    --Раскомментировать, если необходимо отключать носитель после завершения синхронизации 
- --my UnmountDisk(RemovableDiskName) +    --my UnmountDisk(RemovableDiskName) 
- end if +   end if 
- end tell +  end tell 
- end repeat+ end repeat
 end adding folder items to end adding folder items to
  
 --Обработчик синхронизации --Обработчик синхронизации
 on StartSync(SyncRootFolder, SyncFolder, RemovableDiskName) on StartSync(SyncRootFolder, SyncFolder, RemovableDiskName)
- --Источник + --Источник 
- set SourcePath to quoted form of (POSIX path of (path to documents folder as text) & SyncRootFolder & "/" & SyncFolder & "/"+ set SourcePath to quoted form of (POSIX path of (path to documents folder as text) & SyncRootFolder & "/" & SyncFolder & "/"
- --Назначение + --Назначение 
- tell application "System Events" to set DestinationPath to quoted form of (POSIX path of disk item RemovableDiskName & "/" & SyncFolder as text) + tell application "System Events" to set DestinationPath to quoted form of (POSIX path of disk item RemovableDiskName & "/" & SyncFolder as text) 
- try + try 
- do shell script "rsync -au --delete" & space & SourcePath & space & DestinationPath +  do shell script "rsync -au --delete" & space & SourcePath & space & DestinationPath 
- delay 1 +  delay 1 
- display notification "Каталог" & space & quoted form of SyncFolder & space & ¬ +  display notification "Каталог" & space & quoted form of SyncFolder & space & ¬ 
- "синхронизирован с съёмным диском" & space & RemovableDiskName with title "Синхронизация каталога" +   "синхронизирован с съёмным диском" & space & RemovableDiskName with title "Синхронизация каталога" 
- on error ErrorMessage + on error ErrorMessage 
- set ErrorMessage to do shell script "echo" & space & quoted form of (ErrorMessage as text) & "| awk -F 'failed:' '{print$2}' | awk -F ' at ' '{print$1}'" +  set ErrorMessage to do shell script "echo" & space & quoted form of (ErrorMessage as text) & "| awk -F 'failed:' '{print$2}' | awk -F ' at ' '{print$1}'" 
- display dialog "Копирование каталога" & space & quoted form of SyncFolder & space & "не выполнено." & ¬ +  display dialog "Копирование каталога" & space & quoted form of SyncFolder & space & "не выполнено." & ¬ 
- return & "Failed:" & space & ErrorMessage buttons {"OK"} default button 1 with icon stop +   return & "Failed:" & space & ErrorMessage buttons {"OK"} default button 1 with icon stop 
- end try+ end try
 end StartSync end StartSync
  
---Обработчик размонтирования накопителя+--Обработчик размонтрования накопителя
 on UnmountDisk(RemovableDiskName) on UnmountDisk(RemovableDiskName)
- delay 5 + delay 5 
- tell application "Finder" to eject RemovableDiskName+ tell application "Finder" to eject RemovableDiskName
 end UnmountDisk end UnmountDisk
 </code> </code>
Строка 65: Строка 66:
  
 {{ :apple-mac-os:macos-ventura:pasted:20230109-123922.png }} {{ :apple-mac-os:macos-ventura:pasted:20230109-123922.png }}
- 
-Для синхронизации каталогов по заданному расписанию, необходимо удалить или закомментировать в скрипте строки 1, 2, 3, 6, 50, 51, 52, 53 и создать демона, как это описано [[apple-mac-os:macos-monterey:automatic-deletion-of-old-files-daemon-as-task-scheduler-in-macos|здесь]]. 
  
  
Строка 73: Строка 72:
 ^ Версия ОС                                   ^ ^ Версия ОС                                   ^
 | Apple macOS Ventura (13.0)  | | Apple macOS Ventura (13.0)  |
 +| Apple macOS Sonoma (14.0)  |
  
 ---- ----
apple-mac-os/macos-ventura/automatic-synchronization-of-files-and-directories-on-macos.txt · Последнее изменение: 08.11.2023 20:41 — Виталий Якоб

Donate Powered by PHP Valid HTML5 Valid CSS Driven by DokuWiki