লিনাক্স: একটানা একটানা ফাইলগুলি সিঙ্ক্রোনাইজ করুন


61

পরিস্থিতি: স্থানীয়ভাবে পিএইচপি ফাইল সম্পাদনা করে একটি আইডিই একটি লিনাক্স ডেস্কটপ বাক্সে সেট আপ করা হয়। যতবারই আমি কোনও ফাইল সংরক্ষণ করি, আমি এই পরিবর্তনটি লিনাক্স সার্ভারে উপস্থিত হওয়া চাই যেখানে অ্যাপাচি চলছে। সার্ভারে ssh (এবং সাম্বা এবং nfs এই বিষয়টির জন্য) রয়েছে।

একটি রেফারেন্স হিসাবে, যখন আমি উইন্ডোজে ফাইলগুলি সম্পাদনা করি, অবশেষে আমি উইনসিসিপির কাছে আমার প্রয়োজনীয় সঠিক সরঞ্জাম হিসাবে এসেছি - উইনসিসিপি কেবলমাত্র এই বৈশিষ্ট্যটি উপস্থিত করেছেন, প্রাথমিক সিঙ্ক এবং তারপরে অবিচ্ছিন্ন আপডেট সহ, ফাইল-সিস্টেম ঘড়ি পরিষেবাটি ব্যবহার করে: "রিমোট ডিরেক্টরিটি আপ রাখুন তারিখ "।

লিনাক্সে, কেউ তর্ক করতে পারে যে sshfs পুরোপুরি সিঙ্ক্রোনাইজেশন প্রয়োজনের পক্ষের জন্য নিযুক্ত করা যেতে পারে। উইন্ডোজগুলিতে একটি সাম্বা-ভাগ একই কাজ করত। তবে, আমি চাই আইডিই স্থানীয় ফাইলগুলির সাথে (এসএসডি ডিস্কে!) কাজ করবে, পিএইচপি ইনডেক্সিং এবং হোয়াটসটস করার জন্য নেটওয়ার্কের উপর দিয়ে যেতে হবে না, যা বয়সের সময় লাগে।

তবে sshfs তবুও সমাধানের অংশ হতে পারে - যাতে দুটি স্থানীয় ডিরেক্টরিতে অবিচ্ছিন্ন সিঙ্ক্রোনাইজেশন করা দরকার।

কোন ধারণা বা পয়েন্টার?


আরএসসিএনএইচ সরঞ্জামটি ব্যবহার করতে বা ওয়েবসারভারের নথির মূলের মধ্যে একটি ফোল্ডার ভাগ করে নেওয়ার কথা বিবেচনা করুন যাতে আপনি সরাসরি উইন্ডোজের নীচে ফাইলগুলি পরিচালনা করতে পারেন
ভিনিসিয়াস কামাকুরা

2
আরএসএনসি হচ্ছে "ওয়ান গো" " আমার ক্রমাগত আপডেট দরকার, এটিই এখানে সম্পূর্ণ পয়েন্ট - আমি একটি ফাইল সম্পাদনা করি, এটি সংরক্ষণ করি এবং যে পণ্য / সিস্টেম / ধারণাটির জন্য আমি অনুরোধ করি সেগুলি এই সেভ-অ্যাকশনটি বেছে নেবে এবং তত্ক্ষণাত নতুন সংস্করণটি আপলোড করবে। এনবি: উভয় পক্ষই লিনাক্স। এনবি 2: আমি স্থানীয় ফাইলগুলিতে সম্পাদনা করতে চাই, অন্যথায় sshfs নিজেই এটি কেটে ফেলবে।
stolsvik

6
অফ-টপ ভোটাররা, এটি একটি সীমানা কেস, তবে আমি মনে করি এটি প্রায়শই জিজ্ঞাসিত প্রশ্নাগুলির "প্রোগ্রামারদের দ্বারা ব্যবহৃত সাধারণত" সরঞ্জামগুলির অধীনে পরিষ্কারভাবে পড়ে।
কার্ল বিলেফেল্ট

এটি কোনও নিখুঁত ম্যাচ না হলেও, আপনি ওভারলেফগুলি দেখতে পাবেন
phs

উত্তর:


57

আপনি inotifywaitইনোটিফাই-সরঞ্জাম প্যাকেজ থেকেও ব্যবহার করতে পারেন ।

inotifywait -r -m -e close_write --format '%w%f' /tmp | while read MODFILE
do
    echo need to rsync $MODFILE ...
done

13
উপর inotify-সরঞ্জাম ওয়েবসাইট , একটি rsync ট্রিগার inotify-অপেক্ষার ব্যবহারের একটি প্রশংসনীয় ভাল উদাহরণ।
কার্ল বিলেফেল্ট

আমি গত রাতে এই সঠিক জিনিসটি খুঁজছিলাম! আহ্ আমি
সুপারইউসারকে

এটি করার কোনও উপায় কি তবে সকেটটি খোলা রাখুন? rsync/ scpএসএসএস সংযোগ স্থাপনের সময় একটি বিরক্তিকর বিলম্ব হয়।
ফ্ল্যাশ করুন

1
@ ফ্ল্যাশ হ্যাঁ, সকেটটি উন্মুক্ত রাখতে আপনি এসএসএইচ মাল্টিপ্লেক্সিং ব্যবহার করতে পারেন ।
উইল অ্যাংলে

31

Lsyncd এটির জন্য ভাল সমাধান হতে পারে।

Lsyncd একটি স্থানীয় ডিরেক্টরি ট্রি ইভেন্ট ইভেন্ট মনিটরের ইন্টারফেস (ইনোটাইফাই বা ফিসেভেন্টস) দেখে। এটি কয়েক সেকেন্ডের জন্য ইভেন্টগুলি একত্রিত করে এবং তারপরে পরিবর্তনগুলি সিঙ্ক্রোনাইজ করার জন্য একটি (বা আরও) প্রক্রিয়া (এস) তৈরি করে। ডিফল্টরূপে এটি rsync। Lsyncd একটি হালকা ওজনযুক্ত লাইভ মিরর সমাধান যা নতুন ফাইল সিস্টেম বা ব্লক ডিভাইসগুলির প্রয়োজন হয় না এবং স্থানীয় ফাইল সিস্টেমের কার্যকারিতা ব্যাহত করে না ইনস্টল করা তুলনামূলকভাবে সহজ।

নীচের লাইনে, এটি অন্যান্য উত্তরগুলির পরামর্শ অনুসারে কাজটি করার জন্য একই ধরণের সরঞ্জাম (ইনোটাইফাই এবং আরএসসিএনসি) ব্যবহার করে তবে শেল স্ক্রিপ্টিংয়ের সাথে পরিচিত না এমন ব্যক্তির জন্য সেটআপ করা আরও সহজ।


কেবল সহজ নয়, এটি বিন্যাস ছাড়াই ডিরেক্টরিটিকে সরানোর মতো পরিস্থিতিগুলি পরিচালনা করার চেষ্টা করে handle
সায়েন্টিক

5
সাবধান: এই প্রোগ্রামটিতে কিছু সমস্যাযুক্ত বৈশিষ্ট্য রয়েছে। এটি লেখার ক্ষেত্রে: ১. এটি ডিফল্ট হিসাবে উত্সটিতে উপস্থিত না থাকা দূরবর্তী ফাইলগুলি মুছে দেয়। 2. "রিমোট:" হোম ফোল্ডারের পরিবর্তে "রিমোট: /" বোঝায়। ৩. এটি ডেমনাইজ করে, তাই আপনি কী জানেন তা জানেন না। ৪. এটি তাত্ক্ষণিকভাবে টিআরএম সংকেতকে সম্মান করে না।
ফ্রেডরিচ 14

27

আমার কোডটি দূরবর্তী বাক্সগুলিতে চালিত হওয়া প্রয়োজন এবং আমি স্থানীয় মেশিনে কোড লিখি this আমি একটি দুর্দান্ত সরঞ্জাম পেয়েছি যা আপনি অবিচ্ছিন্নভাবে আপনার স্থানীয় ফোল্ডারগুলি নিরীক্ষণ করতে এবং সেগুলি দূরবর্তী বা স্থানীয় ফোল্ডারে সিঙ্ক করতে ব্যবহার করতে পারেন: https://github.com/axkibe/lsyncd

Ssh ওভার রিমোট মেশিনের সাথে একটি স্থানীয় দিরকে নিয়মিত সিঙ্ক করার জন্য একটি সহজ কমান্ডটি হ'ল:

lsyncd -log all -nodaemon -rsyncssh <local_path> <user>@<ip> <remote_path>

অন্য কোনও আরএসসিএনসি কমান্ডের মতো, নিশ্চিত হয়ে নিন যে আপনি ফোল্ডারটি সঠিকভাবে দিয়েছেন এবং কমান্ডটি চালানোর আগে পরীক্ষা করে দেখুন। আমি প্রায় আমার দূরবর্তী মেশিনটিকে হত্যা করেছিলাম কারণ আমি সঠিক গন্তব্য ডিরেক্টরিটি দিতে মিস করেছি। নিশ্চিত হয়ে নিন যে আপনি দূরবর্তী পথটি মিস করবেন না এবং '/' ব্যবহার করবেন না আপনি যদি না জানেন যে আপনি কী করছেন।


এটি পোস্ট করার তিন বছর পরেও এটি আরও অনেক বেশি উত্সর্গের দাবিদার
FliiFe

দুর্দান্ত কাজ করে, অবশেষে এটি আমার ম্যাক ওএস সিয়েরাতে কাজ করে, দুর্দান্ত কাজ করে।
এরিক ভ্যান ডি ভেন

2

আপনার যদি ফাইল সিস্টেমটি পর্যবেক্ষণ করতে হয় তবে এটি করার উপায়টি ইনোটিফাই। আমি যখন ফাইল সিস্টেম পরিবর্তন হয়ে যায় তখন সিঙ্ক সম্পাদন করতে পাইনোটাইফাই ব্যবহার করে একটি সাধারণ অজগর স্ক্রিপ্ট লিখবডকুমেন্টেশন দেখুন । আপনি কিছু অনুপ্রেরণার জন্য অটোসিঙ্ক.পিও চেকআউট করতে পারেন । আনন্দ কর.


1

আমি একবার যা করেছি তা হ'ল বাশ স্ক্রিপ্টটি ls -lএকটি লুপে চলমান (কিছুটা ঘুমের সাথে) এবং আগের আউটপুটটির সাথে তুলনা করে। যদি এটি পরিবর্তিত হয়, আপনার সিঙ্ক্রোনাইজেশন করুন।

#!/bin/bash

listcommand="ls -l $*"

newfilelist=$( $listcommand )
while true
do
   if [[ $oldfilelist != $newfilelist ]]
   then
      oldfilelist=$newfilelist
      # run your synchronization tool
   fi
   sleep 10 || exit 2 
   newfilelist=$( $listcommand )
done

এই স্ক্রিপ্টটি একটি নতুন টার্মিনালে আর্গুমেন্ট হিসাবে ফাইলের নাম (আপনার সিঙ্ক্রোনাইজেশন সরঞ্জামে রাখার পরে) দিয়ে শুরু করুন।

(আমি এটি একটি সংকলন শুরু করতে ব্যবহার করেছি, সিঙ্ক্রোনাইজ করার জন্য নয়, তবে এটি একইভাবে কাজ করবে))


-1

আরও অনেক সহজ পদ্ধতির:

সাম্বা (বা এনএফএস) দিয়ে আপনার / var / www রফতানি করুন এবং সরাসরি সার্ভারে ফাইলগুলিতে কাজ করুন।

আরেকটি সমাধান: বেশিরভাগ আইডিই বিভিন্ন ডিপ্লোয়মেন্ট কনফিগারেশনকে মঞ্জুরি দেয় - আপনার উপযুক্ত অনুসারে এমন কোনও আছে কিনা তা পরীক্ষা করে দেখুন।

অথবা গিট, বাজার ইত্যাদির মতো সোর্স কোড ম্যানেজমেন্ট সিস্টেম সেট করুন

শুভকামনা !!


3
উত্তর করার জন্য ধন্যবাদ. যাইহোক, আমি বিশেষভাবে প্রশ্নটিতে এই পদ্ধতিটি বাদ দিয়েছি।
স্টলসভিক
আমাদের সাইট ব্যবহার করে, আপনি স্বীকার করেছেন যে আপনি আমাদের কুকি নীতি এবং গোপনীয়তা নীতিটি পড়েছেন এবং বুঝতে পেরেছেন ।
Licensed under cc by-sa 3.0 with attribution required.