फ़ाइल अनुमतियों का बैकअप लें और पुनर्स्थापित करें


17

वहाँ बैक अप लेने और फ़ाइल का स्वामित्व और अनुमतियाँ (चीजों के साथ बदला जा सकता है कि बहाल करने के लिए एक रास्ता है chownऔर chmod)?

आप इसे आइकल्स का उपयोग करके विंडोज में कर सकते हैं ।

एक्सेस कंट्रोल लिस्ट के बारे में क्या?


यदि आपने बताया कि आप कौन से डिस्ट्रो का उपयोग कर रहे हैं तो यह मदद करेगा, क्योंकि विभिन्न डिस्ट्रो विभिन्न पैकेज मैनेजर का उपयोग करते हैं।
गैरेथ.रेड

@garethTheRed, क्या यह भी इस्तेमाल किया जा रहा है, या बस distro पर निर्भर करता है?
leeand00

1
मुझे संदेह है कि यह फाइलसिस्टम पर निर्भर करेगा।
garethTheRed

अब तक, कोई सही जवाब नहीं है।
किटीगर्ल

जवाबों:


24

आप इसे एसीएल पैकेज से कमांड के साथ कर सकते हैं (जो सभी मुख्यधारा के वितरण पर उपलब्ध होना चाहिए, लेकिन आधार स्थापना का हिस्सा नहीं हो सकता है)। एसीएल मौजूद होने पर वे वापस एसीएल को बहाल करते हैं, लेकिन वे एसीएल का समर्थन नहीं करने वाली प्रणालियों पर भी बुनियादी अनुमति के लिए काम करते हैं।

वर्तमान निर्देशिका और इसकी उपनिर्देशिकाओं में पुनरावृत्ति की अनुमति के लिए:

getfacl -R . >permissions.facl

अनुमतियाँ पुनर्स्थापित करने के लिए:

setfacl --restore=permissions.facl

हम्म। मुझे वास्तव में एसीएल पर पढ़ने की जरूरत है।
रोइमा

1
उत्पन्न फ़ाइल में, क्या वे एक निर्देशिका के सापेक्ष भी हैं?
leeand00

2
@ leeand00 हां, उत्पन्न फ़ाइल हमेशा सापेक्ष फ़ाइल नामों का उपयोग करती है।
गिल्स एसओ- बुराई को रोकना '

@ Gilles, unix.stackexchange.com/questions/364517/… setfacl फ़ाइलों के आधार पर chmodफिर से नहीं हो सकता है, शायद संघर्ष का कारण होगा?
किटीगर्ल

1
@kittygirl मुझे पता नहीं है कि आप क्या पूछ रहे हैं। "सेटफेकल फाइलें फिर नहीं दिखा सकती हैं" क्या मतलब है? इसका unix.stackexchange.com/questions/364517/… से क्या लेना-देना है ? क्या संघर्ष?
गिलेस एसओ- बुराई को रोकना '

2

मैं कुछ भी "शेल्फ से दूर" के बारे में नहीं जानता जो ऐसा करेगा। यहाँ आपके लिए एक स्टार्टर स्क्रिप्ट है, हालाँकि, यह बुनियादी अनुमतियाँ संभाल लेगी। यह किसी भी विवरण के एसीएल को संभालता नहीं है - लेकिन आपका प्रश्न स्पष्ट रूप से उन को बाहर करता है। (यह पैथोलॉजिकल फाइलनेम पर भी विफल हो जाएगा - जो व्हाट्सएप से शुरू होते हैं, या गैर-मुद्रण योग्य वर्ण होते हैं।)

अनुमतियाँ सहेजें

find * -depth -exec stat --format '%a %u %g %n' {} + >/tmp/save-the-list

अनुमतियों को पुनर्स्थापित करें

while read PERMS OWNER GROUP FILE
do
    chmod "$PERMS" "$FILE"
    chown "${OWNER}:${GROUP}" "$FILE"
done </tmp/save-the-list

क्या आपका मतलब है कि ACL भी पैथोलॉजिकल फाइलनामों पर विफल हो जाएगा?
किटीगर्ल

@ किटीगर्ल ने एसीएल के किसी भी प्रसंस्करण को स्क्रिप्टलेट में शामिल नहीं किया क्योंकि ओपी ने उन्हें आवश्यकताओं से स्पष्ट रूप से बाहर रखा था। आप जो चाहें उसे जोड़ सकते हैं, यह ध्यान में रखते हुए कि कोड विशेष रूप से मजबूत नहीं है (पैथोलॉजिकल फाइलनाम का वर्णन करने वाली टिप्पणी देखें)।
रोज़ा

मुझे एक समस्या मिली: ढूँढ नहीं सकते .htaccess, gitignore...
किटीगर्ल

0
#!/bin/bash
# prepare files
home="/home/exchange"
cd $home
>acl
echo "#!/bin/bash">recovery_acl.sh
echo "cd $home">>recovery_acl.sh
f='./'
# create acl file sorted by dir_level
for i in `seq 0 15`;do
  find . -mindepth $i -maxdepth $i -type d -exec getfacl {} +|grep -E '*UTS|file:'>>acl
done
sed -i 's/default\:user/\-dm\ u/g' acl
sed -i 's/default\:group/\-dm\ g/g' acl
sed -i 's/user/\-m\ u/g' acl
sed -i 's/group/\-m\ g/g' acl
sed -i 's/\#\ file\:\ /\.\//g' acl
sed -i 's,\\,\\\\,g' acl

while IFS='' read -r line ; do
  # grep dir name
  if echo "$line" | grep -q "$f" ; then
    dir="$line"
    continue
  fi
  echo setfacl $line '"'$dir'"'>>recovery_acl.sh
  # grep non def acl (for files)
  if echo "$line" | grep -q '\-m' ; then
    echo setfacl $line '"'$dir'"'/*>>recovery_acl.sh
  fi
done < "acl"

sed -i "s/\\\134/\\\\\\\134/g" recovery_acl.sh
sed -i "s/\\\040/\\\\ /g" recovery_acl.sh

इस बैश स्क्रिप्ट को acl केवल dirs मिलता है (मेरे केस में फाइल acls = dir (पैरेंट) acl) स्क्रिप्ट के निष्पादन के बाद, एक और "Recovery_acl.sh" बनाएगा।

"कोई ऐसी फ़ाइल या निर्देशिका नहीं" जैसे त्रुटियों को पुनर्प्राप्त करते समय, इसका मतलब है कि dir खाली है या dirname में एक साथ दो / अधिक रिक्त स्थान हैं।

हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.