автоматически копировать содержимое вставленного носителя в папку - PullRequest
1 голос
/ 21 июня 2011

У меня есть много ранее зарезервированных данных, записанных на CD / DVD для копирования обратно на мой жесткий диск. Я ищу способ выгрузить все на вставленном носителе в какую-либо папку (предпочтительно, созданную по имени тома) каким-то автоматическим способом (предпочтительно через яблочный скрипт или сценарий оболочки ) что бы:

  • создать папку по имени тома dump
  • выгрузить содержимое вставленного носителя в папку
  • извлечение носителя
  • ждать, пока будет вставлен следующий носитель

Моя проблема заключается в том, что на всех этих дисках есть метки случайных томов (это не совсем случайные метки, но давайте рассмотрим случайные, чтобы быть уверенным).

Поскольку я заранее не знаю метку тома, и каждая точка монтирования (в / Volumes) и имя устройства (в / dev) динамически назначаются на Mac, где я начинаю находить, какой носитель был только что вставлен ( при условии, что никакие другие устройства или носители не будут вставлены во время сценария).

Я искал довольно долгое время, но большинство вещей, которые я нашел, имеют дело с известными метками тома.

Любые идеи будут очень признательны!

Заранее спасибо!

1 Ответ

2 голосов
/ 21 июня 2011

Вы можете использовать комбинацию друтил и дискутил. drutil может указать путь к устройству, а с помощью diskutil - имя тома. Самое сложное - это анализ результатов, чтобы получить то, что вы хотите.

Попробуйте это ...

set diskName to cdDVDName()
if diskName is missing value then error "Could not get the name of the inserted disk"
diskName

on cdDVDName()
    set diskName to missing value
    try
        set theConst to "Volume Name: "
        set drutilStatus to do shell script "drutil status -drive internal | grep \"/dev/\""
        set theDrive to "/dev/" & item -1 of (words of drutilStatus)
        set diskutilInfo to do shell script "diskutil info " & theDrive & " | grep \"" & theConst & "\""

        set text item delimiters to theConst
        set a to text items of diskutilInfo
        set text item delimiters to ""
        set diskName to item -1 of a
        repeat while diskName begins with space
            set diskName to text 2 thru -1 of diskName
        end repeat
        repeat while diskName ends with space
            set diskName to text 1 thru -2 of diskName
        end repeat
    end try
    return diskName
end cdDVDName

Этот скрипт извлечет CD / DVD ...

do shell script "drutil tray eject"
...