मैं किसी फ़ाइल की अनुमतियों को दूसरे में दोहराना चाहूंगा। मैं डेटा की प्रतिलिपि नहीं बनाना चाहता, केवल अनुमतियाँ।
उदाहरण के लिए, मैंने एक नई फ़ाइल बनाई और यह चाहता हूं कि पहले से मौजूद किसी अन्य फ़ाइल की तरह ही अनुमतियाँ हों।
मैं किसी फ़ाइल की अनुमतियों को दूसरे में दोहराना चाहूंगा। मैं डेटा की प्रतिलिपि नहीं बनाना चाहता, केवल अनुमतियाँ।
उदाहरण के लिए, मैंने एक नई फ़ाइल बनाई और यह चाहता हूं कि पहले से मौजूद किसी अन्य फ़ाइल की तरह ही अनुमतियाँ हों।
जवाबों:
आप इसे कुछ चरणों में icacls और एक टेक्स्ट एडिटर के साथ कर सकते हैं ।
सबसे पहले आपको मूल फ़ाइल की अनुमतियों को सहेजना होगा
icacls C:\test\file1.bin /save perms.txt
आपको perms.txt
जिस भी फोल्डर में भाग करना है icacls
, उसमें आपके द्वारा बनाई गई फाइल को एडिट करना होगा । फाइल कुछ इस तरह दिखनी चाहिए:
file1.bin
D:AI(A;;0x1301bf;;;BU)(A;ID;FA;;;BA)(A;ID;FA;;;SY)(A;ID;0x1200a9;;;BU)(A;ID;0x1301bf;;;AU)
आप 2 पंक्ति पर सभी सामान को अनदेखा कर सकते हैं, हम सभी के बारे में पहली पंक्ति है। file1.bin
अपना नया फ़ाइल नाम बदलें file2.bin
और फ़ाइल को सहेजें।
अब आपको केवल 2 फ़ाइल पर फ़ाइल अनुमतियों को पुनर्स्थापित करने की आवश्यकता है, ध्यान दें कि हमने इस बार फ़ाइल नाम शामिल नहीं किया था। (यदि आपको कोई त्रुटि मिलती है जो कहती है कि " संदर्भित सभी विशेषाधिकार या समूह कॉलर को नहीं सौंपे जाते हैं। " प्रोग्राम को फिर से एक उन्नत कमांड प्रॉम्प्ट में चलाएं।)
icacls C:\test\ /restore perms.txt
File.GetAccessControl()
औरFile.SetAccessControl()
इसे बैच में बनाने के लिए (सबफ़ोल्डर से एक ही ड्राइव के सभी सिक्योरिटी पेमिशन को कॉपी करें या किसी अन्य ड्राइव पर एक ही फ़ोल्डर / फ़ाइल को किसी अन्य ड्राइव पर फ़ाइल करें), cpdacls.bat
इस सामग्री के साथ एक, कहें, फ़ाइल बनाएँ :
@echo off
for /r %1 %%f in (.) do call :icacls_one %%f %2
goto :eof
:icacls_one
icacls %1\*.* /save %TEMP%\perms.txt
icacls %2.%~pnx1 /restore %TEMP%\perms.txt
del /q %TEMP%\perms.txt
और फिर इसे ऐसे ही चलाएं cpdacls.bat e:\ f:\
।
ध्यान दें कि गंतव्य फ़ोल्डर में फ़ोल्डर संरचना, स्रोत फ़ोल्डर में फ़ोल्डर संरचना के समान ही होनी चाहिए, इसकी जड़ से ली गई है , यह निर्भर नहीं करता है कि आपने स्रोत फ़ोल्डर के रूप में क्या सबफ़ोल्डर निर्दिष्ट किया है।
अब तक का सबसे आसान तरीका, पॉवरशेल और रन का उपयोग करना है:
Get-Acl .\file1 | Set-Acl .\file2