কিভাবে arbitrarily rsync ব্যবহারকারী / গ্রুপ মালিকানা মানচিত্র


10

রিমোট সার্ভারে একটি ডিরেক্টরি rsync করতে হবে যাতে সোর্স (স্থানীয়) মেশিনে ব্যবহারকারী এক্স এবং গ্রুপ Y এর সমস্ত ফাইল গন্তব্য (দূরবর্তী) মেশিনে ব্যবহারকারী W এবং গ্রুপ Z এ ম্যাপ করা হয়। এসএসসি ব্যবহার করে পরিবহন হিসাবে সম্ভব হলে, কিন্তু যদি আমি rsync ডেমন ব্যবহার করতে চাই তবে এটিও ভাল।

যে কি একটি উপায় আছে? আমি যেমন নির্বিচারে ব্যবহারকারী / গোষ্ঠী মানচিত্র স্থাপন করার জন্য একটি উপায় খুঁজছি

local user X => remote user W
local group Y => remote group Z
... and as many of these as needed.

এটি একটি প্রশংসনীয় সাধারণ ব্যবহার ক্ষেত্রে হওয়া উচিত, তাই না? উদাহরণস্বরূপ আমার স্থানীয় কম্পিউটারে আমার ফাইল আছে যেখানে আমার ব্যবহারকারী নাম এক্স আছে এবং আমাকে তাদের এমন একটি ওয়েব সার্ভারে আপলোড করতে হবে যেখানে তাদের এমন ব্যবহারকারীর অন্তর্গত থাকতে হবে যার কোনও নাম বা একই ইউআইডি আমার ব্যবহারকারী হিসাবে নেই। ব্যক্তিগত কম্পিউটার.

আমি rsync এর ম্যান পৃষ্ঠাতে এটি খুঁজে পাচ্ছি না ...

স্থানীয় এবং দূরবর্তী মেশিনে উভয়ই LINUX (উবুন্টু স্থানীয়, সেন্টোএস রিমোট)

কমান্ড আমি চেষ্টা করেছিলাম:     rsync -avz / path / to / স্থানীয় root@myhost.com: / path / to / দূরবর্তী


1
অনুগ্রহ সর্বদা আপনার ওএস অন্তর্ভুক্ত। সমাধান প্রায়ই ব্যবহৃত অপারেটিং সিস্টেম উপর নির্ভর করে। আপনি উইন্ডোজ, লিনাক্স, ইউনিক্স, ওএসএক্স, বিএসডি ব্যবহার করছেন? কোন সংস্করণ?
terdon

উত্তর:


16

rsync সংস্করণ 3.1.0 চালু --usermap এবং --groupmap অপশন যে অবিকল জন্য। দেখুন মানুষ পাতা


এটা জানা ভালো. এই জন্য স্পষ্টভাবে একটি ব্যবহার ক্ষেত্রে দৃশ্যকল্প আছে। উদাহরণস্বরূপ, আমার দুটি আইসেঙ্গার সার্ভার আছে এবং আমি মাস্টার থেকে স্লেভ থেকে কনফিগার ফাইলগুলির এক-উপায় সিঙ্ক করতে হবে। কিন্তু মালিকের উপর আইসিঙ্গা ক্রীতদাসের আইসিঙ্গার চেয়ে ভিন্ন। সুতরাং, rsync জানতে ভাল এই হ্যান্ডেল করতে পারেন।
Michael Martinez

সংস্করণ নোট: উবুন্টু ভি 16.04 এর v3.1.1 আছে, CentOS 7 এর v3.1.2 আছে, কিন্তু CentOS 6 এর v3.0.6 রয়েছে। এই নতুন distros জন্য মহান কাজ করে।
jimp

3

Rsync এর সর্বশেষ সংস্করণ (কমপক্ষে 3.1.1) আপনাকে "রিমোট মালিকানা" নির্দিষ্ট করতে দেয়:

--usermap=tom:www-data

টম মালিকানা www-data পরিবর্তন করে (উর পিএইচপি / Nginx)। আপনি যদি ক্লায়েন্ট হিসাবে ম্যাক ব্যবহার করেন তবে শেষ সংস্করণে আপগ্রেড করার জন্য ব্রু ব্যবহার করুন। এবং আপনার সার্ভারে, সংরক্ষণাগার উত্স ডাউনলোড করুন, তারপর "তৈরি করুন"!


আমার জন্য এটি --chown = tom: www-data হিসাবে কাজ করে
Federico Galli

0

আপনি যদি ইচ্ছাকৃত ব্যবহারকারীদের কাছে ফাইলগুলির মালিকানা পরিবর্তন করতে চান তবে আপনাকে গন্তব্য বাক্সে রুট হতে হবে।

আমি rsync দ্বারা সমন্বিত একটি বৈশিষ্ট্য আছে মনে হয় না, কিন্তু আপনি এটি চালানোর মাধ্যমে এটি আচমকা করতে পারেন find আপনার rsync করছেন পরে।

হয়তো, এরকম একটি কমান্ড এই কৌশলটি করবে: উদাহরণস্বরূপ, ইউআইডি 1000 = & gt; থেকে অনুবাদ করুন 505 এবং ইউআইডি 1001 = & gt; 700:

find /your/rsynced/path -user 1000 -exec chown 505 {} \;
find /your/rsynced/path -user 1001 -exec chown 700 {} \;

আপনার যদি অনেক ব্যবহারকারী থাকে তবে আপনি আপনার পূর্বনির্ধারিত ভাষাতে একটি ম্যাপিংয়ের সাথে একটি লুপ ব্যবহার করতে পারেন।

আনন্দ কর.


ঠিক আছে তাই rsync আছে যে একটি উপায় নেই। আশ্চর্যজনক, এটা আমার যেমন একটি সুস্পষ্ট প্রয়োজন অনুভূত।
matteo

1
@ এমটিটোও যদি আপনি এটি ব্যবহার করেন তবে সতর্ক থাকুন। রিমোট মেশিনে আইডি 1000 বা 1001 ব্যবহারকারী থাকলে সেখানে দূরবর্তী অবস্থানগুলিতে বৈধভাবে মালিকানাধীন ফাইলগুলি থাকতে পারে এবং তাদের চাউন করা সমস্যার কারণ হতে পারে।
terdon

@Tterdon রিমোট মেশিনে কোনও নাম ছাড়াই কোন ব্যবহারকারী থাকবে? (ফাইলগুলি তালিকাভুক্ত হওয়ার পরিবর্তে আইডিটি দেখানো হলে, ব্যবহারকারীর নাম নেই, ঠিক আছে?)
matteo

1
@ ম্যাটটোও না, প্রত্যেক ব্যবহারকারীর একটি ব্যবহারকারী আইডি পাশাপাশি একটি নাম থাকে। অধিকাংশ ডেবিয়ান ভিত্তিক সিস্টেমে (এবং সম্ভবত অন্যরা) প্রথম, ডিফল্ট ব্যবহারকারী ব্যবহারকারী 1000। চলমান চেষ্টা করুন id আপনার মেশিনে দেখতে। অতএব, যদি আপনি এই মত আইডি ব্যবহার করেন তবে আপনি অনুমান করছেন যে দূরবর্তী মেশিনে একই আইডি নেই এবং এটি সম্ভবত সত্য নয়।
terdon

আমার ক্ষেত্রে সার্ভারে ইউআইডি 1000 সহ কোনও ব্যবহারকারী নেই, অন্তত এটি / etc / passwd এ তালিকাভুক্ত নয়। যা আমি অনুমান করলাম কারণ যখন আমি "ls -la" দিয়ে ফাইল তালিকাবদ্ধ করি, 1000 এর ফাইলগুলি (যা আমার স্থানীয় মেশিন থেকে rsync -avz এর ফলাফল ছিল যেখানে ব্যবহারকারী 1000 আমার ডিফল্ট ব্যবহারকারী "টিও") দেখায় "1000" "মালিক হিসাবে। যদি ওই আইডি দিয়ে কোন ব্যবহারকারী ছিল, এবং তার নাম ছিল "কেউ", তাহলে ফাইলগুলির মালিক Ls এর আউটপুটে "কারো" হিসাবে দেখানো হবে, তাই না? যাইহোক যে একটি দরকারী সতর্কতা অ্যাকাউন্ট গ্রহণ করা, ধন্যবাদ।
matteo

-1

আমি নিশ্চিত, আমি বুঝতে পারছি না ssh আপনি একটি ব্যবহারকারীর নাম প্রদান করতে হবে। সেই ব্যবহারকারীর নামটি হ'ল রিমোট মেশিনে ব্যবহারকারী W কে গোষ্ঠী Z এর অন্তর্গত হবে। অতএব, সবকিছু ঠিকভাবে স্থানান্তরিত হবে যেমনটি আপনি চান:

rsync /path/to/local userX@remote.com/path/to/remote

OP এর মন্তব্যের উত্তর সম্পাদনা করুন।

আপনি এই ব্যবহারকারী ম্যাপিং করতে চান এবং অনুমতি সেটিংস হারান না, ব্যবহার করবেন না -a। প্রথম, সঙ্গে rsync চালানো mywww@myhost.com সঠিক ব্যবহারকারীর নাম পেতে। তারপর পরিবর্তে -a যা আপনাকে মালিকানা সংরক্ষণ করতে পরিচালিত করবে, নিজে বিকল্পগুলি নির্দিষ্ট করুন। থেকে man rsync:

    -a, --archive               archive mode; equals -rlptgoD (no -H,-A,-X)
    -r, --recursive             recurse into directories
    -l, --links                 copy symlinks as symlinks
    -p, --perms                 preserve permissions
    -t, --times                 preserve modification times
    -g, --group                 preserve group
    -o, --owner                 preserve owner (super-user only)
    -D                          same as --devices --specials

সুতরাং, -a উপরের সমস্ত অপশন সক্রিয় করে তবে আপনি গ্রুপ বা মালিককে সংরক্ষণ করতে চান না। এই কমান্ডটি আপনি যা করতে চান তা করা উচিত:

rsync -rlptDvz /path/to/local mywww@myhost.com:/path/to/remote

যেহেতু আপনি এখন লগ ইন করছেন mywww এবং আর মালিক / গোষ্ঠী তথ্য সংরক্ষণ, দ্বারা তৈরি কপি rsync অন্তর্গত হবে mywww ব্যবহারকারী।


না, আমি rsync -avz / path / to / স্থানীয় root@myhost.com: / path / to / দূরবর্তী করি। আমার প্রশ্ন হচ্ছে, আমার স্থানীয় মেশিনে "x" ব্যবহারকারীর ফাইলগুলি কীভাবে সার্ভারে "w" ব্যবহারকারীর কাছে পুনঃপরিচিত করা যায়? আমার কম্পিউটারে, আমার ফাইল "টিও" অন্তর্গত। সার্ভারে এমন কোনও ব্যবহারকারী নেই যা "টিও" নামে পরিচিত, আমি ব্যবহারকারীকে apache ব্যবহার করতে চাই, "mywww" বলুন; এবং দলের জন্য একই। ডিফল্টরূপে, rsync মালিককে "টিও" হিসাবে সংরক্ষণ করার চেষ্টা করবে, এবং যেহেতু এমন কোনও ব্যবহারকারী নেই, এটি ইউআইডি সংরক্ষণ করবে, যার ফলে ব্যবহারকারীর "1000" ব্যবহারকারীর ফাইল রয়েছে যা সার্ভারে থাকা কোনও ব্যবহারকারী নয়
matteo

বিটিউই, একই সময়ে আমি ফাইলের অনুমতিগুলি সংরক্ষণ করতে হবে যা এটি ইতিমধ্যে বিকল্প হিসাবে করে। আমি বলতে চাচ্ছি যে, কোনও সমাধান যা আমাকে ফাইলের অনুমতিগুলি সংরক্ষণ করতে সক্ষম করে দেয় (যেমন একটি 777 ফাইল 777 এবং 600 600 একটি 600 থাকে) এই কৌশলটি করবে না
matteo

@ ম্যাট্তেও তাই কারণ -a মালিক এবং গ্রুপ বিকল্প সংরক্ষণ করতে সক্ষম করে। আমার আপডেট উত্তর দেখুন।
terdon

1
@ মাত্ত্তো দয়া করে আপনার প্রশ্ন জিজ্ঞাসা করার সময় আসলে কী প্রয়োজন তা ব্যাখ্যা করুন। এই ভাবে আমরা অসম্পূর্ণ উত্তর প্রদান সময় নষ্ট করবেন না। পরবর্তী সময়, মনে রাখবেন i) ব্যবহৃত প্রকৃত কমান্ডগুলি অন্তর্ভুক্ত করুন (rsync ডিফল্টভাবে আপনার সংরক্ষণের জন্য কোনও কিছু সংরক্ষণ করে না -a যেটি করেছেন) ii) আপনার সমস্ত সীমাবদ্ধতাগুলি স্পষ্টভাবে ব্যাখ্যা করুন, আপনার শেষ মন্তব্য না হওয়া পর্যন্ত আপনি কেবল একজন ব্যবহারকারীকে উল্লেখ করেছেন এবং iii) আপনার OS উল্লেখ করুন। যাইহোক, এই সঙ্গে করার উপায় rsync ফাইলগুলির একটি সেট অনুলিপি করতে হবে mywww@remote এবং পরবর্তী সেট হিসাবে root@remote
terdon

1
@ মাত্ত্তো আসলেই পরিষ্কার ছিল না যে আপনি ব্যবহার করছেন -a যা মালিকানা সংরক্ষণ করে। আপনার দেওয়া উদাহরণগুলি আপনাকে কেবলমাত্র একজন ব্যবহারকারীর জন্য এটি করার জন্য পরামর্শ দেওয়া হয়েছে। যাইহোক, আমি আপনাকে ব্যবহার করার সুপারিশ করবে rsync, প্রতিটি ব্যবহারকারীর জন্য আপনি কপি করতে চান এমন বিভিন্ন ফাইলগুলির একটি তালিকা তৈরি করুন এবং সংশ্লিষ্ট ব্যবহারকারীর নাম সহ রিমোট মেশিনের সাথে সংযুক্ত একাধিক rsyncs চালান। যে সহজ এবং নিরাপদ হতে হবে।
terdon
আমাদের সাইট ব্যবহার করে, আপনি স্বীকার করেছেন যে আপনি আমাদের কুকি নীতি এবং গোপনীয়তা নীতিটি পড়েছেন এবং বুঝতে পেরেছেন ।
Licensed under cc by-sa 3.0 with attribution required.