declare -i s=${foo}; n=${bar}; mp=${baz}; cn=${qux}; mac_adr=${quux}
sudo hdiutil create -size ${s}b -fs JHFS+X -volname "${n}" -type SPARSEBUNDLE \
"/Volumes/${mp}/${cn}_${mac_addr}.sparsebundle" && echo "Done"
작동하지 않지만
declare -i s=${foo}; n=${bar}; mp=${baz}; cn=${qux}; mac_adr=${quux}
sudo hdiutil create -size ${s}b -fs JHFS+X -volname "${n}" -type SPARSEBUNDLE \
"/Volumes/${cn}_${mac_addr}.sparsebundle" &&
sudo mv -vn "/Volumes/${cn}_${mac_addr}.sparsebundle" "/Volumes/${mp}" && echo "Done"
올바르게 작동합니다.
내가 뭘 잘못하고 있죠?
답변
볼 수있는 유일한 차이점은 다른 볼륨에 스파 스 번들을 만들려고한다는 것입니다. /Volume/test.sparsebundle은 시동 디스크에 있습니다. /Volume/Data/test.sparsebundle은 (아마도) 다른 디스크에 있습니다. 두 번째 드라이브에 어떤 종류의 파일 시스템이 있는지 확인하십시오.
-debug 옵션을 사용하여 두 명령 모두를 시도하고 결과를 비교할 수 있습니다.
답변
10.9.5에서 다음 명령을 사용했습니다.
read -p "Size in GB? = " s; ((s= 10**9*s/512)); read -p "Name of image volume? = " n; read -p "External Volume name (Escape spaces with a backslash - the volume has to exist)? = " m; cn=`scutil --get ComputerName`; mac_addr=`ifconfig en0 | grep "ether"`; mac_addr=${mac_addr#*ether}; mac_addr=${mac_addr// /} ; mac_addr=${mac_addr//:/}; sudo hdiutil create -size ${s}b -fs JHFS+X -volname "${n}" -type SPARSEBUNDLE "/Volumes/${m}/${cn}_${mac_addr}.sparsebundle" && echo "Done"
내부 볼륨의 경우 “Macintosh HD”와 같은 볼륨 이름의 공백에 대한 해결 방법과 함께 작동합니다.
Size in GB? = 2
Name of image volume? = aaa
Existing External Volume Name (Escape spaces with a backslash)? = test\ 2
created: /Volumes/test 2/host_001122334455.sparsebundle
Done
host:~ user$
네트워크 공유에 sparsebundle을 만드는 경우에는 작동하지 않습니다. 여기서 당신은 sudo
명령. 대신 (나는 $ mac_addr을 단순화했다) :
read -p "Size in GB? = " s; ((s= 10**9*s/512)); read -p "Name of image volume? = " n; read -p "External Volume name (Escape spaces with a backslash - the volume has to exist)? = " m; cn=`scutil --get ComputerName`; mac_addr=`ifconfig en0 | grep ether | awk '{print $2}' | sed 's/://g'`; hdiutil create -size ${s}b -fs JHFS+X -volname "${n}" -type SPARSEBUNDLE "/Volumes/${m}/${cn}_${mac_addr}.sparsebundle" && echo "Done"
답변
그래서 (hdiutil 전에 sudo없이) 작동합니다 :
clear; read -p "Желаемый размер раздела в GB? = " s; ((s= 10**9*s/512)); read -p "Введите название раздела? = " n; cn=`scutil --get ComputerName`; mac_addr=`ifconfig en0 | grep "ether"`; mac_addr=${mac_addr#*ether}; mac_addr=${mac_addr// /}; mac_addr=${mac_addr//:/}; read -p "Точка Монтирования = " mp; hdiutil create -size ${s}b -fs JHFS+X -volname "${n}" -type SPARSEBUNDLE "/Volumes/${mp}/${cn}_${mac_addr}.sparsebundle" && echo "Done"
Желаемый размер раздела в GB? = 10
Введите название раздела? = rrr
Точка Монтирования = Data
created: /Volumes/Data/Air_60c54700b918.sparsebundle
Done
네트워크 드라이브에 대한 권리 문제 :
hdiutil - verbose
DIDiskImageCreateWithCFURL: creator returned 0
::getBandEntry: chown() - 501
Сompletion...
DIHLDiskImageCreate() returned 1
hdiutil: create: returning 1
hdiutil: create failed - operation is not permitted
this file is created, but then the operation fails, before he makes the format:
DIDiskImageCreateWithCFURL: creator returned 0
DI_kextWaitQuiet: about to call IOServiceWaitQuiet...
DI_kextWaitQuiet: IOServiceWaitQuiet took 0.000011 seconds
Formatting ...
Completing ...
created: /Volumes/Data/Air_60c22700b922.sparsebundle
공유 네트워크 자원에 “sudo”를 사용하지 마십시오!