(function () { 'use strict'; /* ========================================================= SETTINGS ========================================================= */ const CLOSE_DELAY = 350; const hoverDevice = window.matchMedia( '(hover: hover) and (pointer: fine)' ); /* ========================================================= GLOBAL STATE ========================================================= */ let portal = null; let activeTrigger = null; let activeSelect = null; let activeParent = null; let closeTimer = null; let isHoveringTrigger = false; let isHoveringPortal = false; /* ========================================================= SAFE EVENT TARGET ========================================================= */ function getEventElement(event) { if (event.target instanceof Element) { return event.target; } if ( event.target && event.target.parentElement instanceof Element ) { return event.target.parentElement; } return null; } /* ========================================================= COOKIE HELPER ========================================================= */ function getCookie(name) { const cookies = document.cookie.split(';'); for (let i = 0; i < cookies.length; i++) { const cookie = cookies[i].trim(); if (cookie.indexOf(name + '=') === 0) { return decodeURIComponent( cookie.substring(name.length + 1) ); } } return null; } /* ========================================================= CREATE ONE GLOBAL PORTAL ========================================================= */ function createPortal() { /* * Remove old portal copies from previous code. */ document .querySelectorAll('.wmc-portal-dropdown') .forEach(function (oldPortal) { oldPortal.remove(); }); portal = document.createElement('div'); portal.className = 'wmc-portal-dropdown'; portal.setAttribute( 'role', 'listbox' ); portal.setAttribute('hidden', ''); portal.setAttribute('inert', ''); portal.style.setProperty( 'display', 'none', 'important' ); portal.style.setProperty( 'visibility', 'hidden', 'important' ); portal.style.setProperty( 'opacity', '0', 'important' ); portal.style.setProperty( 'pointer-events', 'none', 'important' ); portal.style.setProperty( 'z-index', '2147483647', 'important' ); document.body.appendChild(portal); /* * Keep dropdown open on desktop while * cursor is inside the portal. */ portal.addEventListener( 'mouseenter', function () { if (!hoverDevice.matches) { return; } isHoveringPortal = true; cancelHide(); } ); portal.addEventListener( 'mouseleave', function () { if (!hoverDevice.matches) { return; } isHoveringPortal = false; scheduleHide(); } ); } /* ========================================================= PREPARE ONE CURRENCY SELECT ========================================================= */ function prepareCurrencySelect(select) { if (!(select instanceof HTMLSelectElement)) { return; } const container = select.closest('.wmc-currency'); if (!container) { return; } container.classList.add('transformed'); /* * Find existing trigger. * * If Elementor cloned the markup, this trigger * may have no old event listeners. That's fine, * because this new version uses delegated events. */ let trigger = container.querySelector( '.wmc-custom-switcher' ); /* * Create trigger if it does not exist. */ if (!trigger) { trigger = document.createElement('div'); trigger.className = 'wmc-custom-switcher'; trigger.setAttribute( 'role', 'button' ); trigger.setAttribute( 'tabindex', '0' ); trigger.setAttribute( 'aria-haspopup', 'listbox' ); trigger.setAttribute( 'aria-expanded', 'false' ); trigger.innerHTML = `
`; container.appendChild(trigger); } /* * Determine current currency. */ let currentValue = select.value; const savedCurrency = getCookie('wmc_current_currency'); if (savedCurrency) { const validSavedCurrency = Array.from(select.options).some( function (option) { return ( option.value === savedCurrency ); } ); if (validSavedCurrency) { currentValue = savedCurrency; } } const currentOption = Array.from(select.options).find( function (option) { return ( option.value === currentValue ); } ); const label = trigger.querySelector( '.wmc-current-label' ); if (label && currentOption) { label.textContent = currentOption .textContent .trim(); } /* * Debug marker only. * * IMPORTANT: * We do NOT use this anymore to decide * whether mobile clones should initialize. */ select.dataset.wmcPortalInitialized = '1'; } /* ========================================================= PREPARE ALL CURRENCY SELECTS ========================================================= */ function prepareAllCurrencySelects() { document .querySelectorAll( '.wmc-select-currency-js' ) .forEach( prepareCurrencySelect ); } /* ========================================================= GET SELECT FROM TRIGGER ========================================================= */ function getSelectFromTrigger(trigger) { if (!trigger) { return null; } const container = trigger.closest('.wmc-currency'); if (!container) { return null; } return container.querySelector( '.wmc-select-currency-js' ); } /* ========================================================= BUILD PORTAL OPTIONS ========================================================= */ function buildPortal(select) { if (!portal || !select) { return; } portal.innerHTML = ''; let currentValue = select.value; const savedCurrency = getCookie('wmc_current_currency'); if ( savedCurrency && Array.from(select.options).some( function (option) { return ( option.value === savedCurrency ); } ) ) { currentValue = savedCurrency; } Array.from(select.options).forEach( function (option) { const item = document.createElement('a'); item.href = '#'; item.className = 'wmc-currency-option'; item.dataset.currency = option.value; item.setAttribute( 'role', 'option' ); if ( option.value === currentValue ) { item.classList.add( 'is-current' ); item.setAttribute( 'aria-selected', 'true' ); } else { item.setAttribute( 'aria-selected', 'false' ); } const name = document.createElement('span'); name.className = 'wmc-currency-name'; name.textContent = option.textContent.trim(); item.appendChild(name); portal.appendChild(item); } ); } /* ========================================================= POSITION PORTAL ========================================================= */ function updatePosition() { if ( !portal || !activeTrigger || !document.body.contains(activeTrigger) ) { return; } const rect = activeTrigger.getBoundingClientRect(); if ( rect.width <= 0 || rect.height window.innerWidth - 5 ) { left = Math.max( 5, window.innerWidth - width - 5 ); } portal.style.setProperty( 'position', 'fixed', 'important' ); portal.style.setProperty( 'top', (rect.bottom - 1) + 'px', 'important' ); portal.style.setProperty( 'left', left + 'px', 'important' ); portal.style.setProperty( 'width', width + 'px', 'important' ); portal.style.setProperty( 'min-width', width + 'px', 'important' ); portal.style.setProperty( 'max-width', width + 'px', 'important' ); portal.style.setProperty( 'z-index', '2147483647', 'important' ); } /* ========================================================= TIMER HELPERS ========================================================= */ function cancelHide() { if (closeTimer !== null) { clearTimeout(closeTimer); closeTimer = null; } } function scheduleHide() { cancelHide(); closeTimer = setTimeout( function () { if ( !isHoveringTrigger && !isHoveringPortal ) { closePortal(); } }, CLOSE_DELAY ); } /* ========================================================= OPEN PORTAL ========================================================= */ function openPortal(trigger) { if (!trigger || !portal) { return; } const select = getSelectFromTrigger(trigger); if (!select) { return; } /* * Close visual state of previous trigger. */ if ( activeTrigger && activeTrigger !== trigger ) { activeTrigger.classList.remove( 'is-open' ); activeTrigger.setAttribute( 'aria-expanded', 'false' ); const previousParent = activeTrigger.closest( '.currency-parent-trigger' ); if (previousParent) { previousParent.classList.remove( 'currency-dropdown-open' ); } } activeTrigger = trigger; activeSelect = select; activeParent = trigger.closest( '.currency-parent-trigger' ); cancelHide(); buildPortal(select); updatePosition(); portal.classList.add( 'active' ); trigger.classList.add( 'is-open' ); if (activeParent) { activeParent.classList.add( 'currency-dropdown-open' ); } trigger.setAttribute( 'aria-expanded', 'true' ); /* * Remove accessibility hiding. */ portal.removeAttribute( 'hidden' ); portal.removeAttribute( 'inert' ); /* * FORCE VISIBLE. * * This intentionally overrides conflicting * Elementor/mobile CSS. */ portal.style.setProperty( 'display', 'block', 'important' ); portal.style.setProperty( 'visibility', 'visible', 'important' ); portal.style.setProperty( 'opacity', '1', 'important' ); portal.style.setProperty( 'pointer-events', 'auto', 'important' ); portal.style.setProperty( 'z-index', '2147483647', 'important' ); } /* ========================================================= CLOSE PORTAL ========================================================= */ function closePortal() { cancelHide(); if (portal) { portal.classList.remove( 'active' ); portal.style.setProperty( 'display', 'none', 'important' ); portal.style.setProperty( 'visibility', 'hidden', 'important' ); portal.style.setProperty( 'opacity', '0', 'important' ); portal.style.setProperty( 'pointer-events', 'none', 'important' ); portal.setAttribute( 'hidden', '' ); portal.setAttribute( 'inert', '' ); } if (activeTrigger) { activeTrigger.classList.remove( 'is-open' ); activeTrigger.setAttribute( 'aria-expanded', 'false' ); } if (activeParent) { activeParent.classList.remove( 'currency-dropdown-open' ); } activeTrigger = null; activeSelect = null; activeParent = null; isHoveringTrigger = false; isHoveringPortal = false; } /* ========================================================= SELECT CURRENCY ========================================================= */ function selectCurrency(item) { if ( !item || !activeSelect ) { return; } const value = item.dataset.currency; if (!value) { return; } /* * Preserve references BEFORE closing. */ const select = activeSelect; const trigger = activeTrigger; const selectedOption = Array.from(select.options).find( function (option) { return ( option.value === value ); } ); if (!selectedOption) { return; } /* * Update original select. */ select.value = value; /* * Update visible label. */ if (trigger) { const label = trigger.querySelector( '.wmc-current-label' ); if (label) { label.textContent = selectedOption .textContent .trim(); } } /* * Save selected currency. */ document.cookie = 'wmc_current_currency=' + encodeURIComponent(value) + '; path=/; SameSite=Lax'; /* * Close first. */ closePortal(); /* * Trigger WooCommerce Multi Currency plugin. */ select.dispatchEvent( new Event( 'change', { bubbles: true } ) ); /* * jQuery compatibility. */ if (window.jQuery) { window.jQuery(select).trigger( 'change' ); } } /* ========================================================= DELEGATED CLICK DESKTOP + MOBILE + ELEMENTOR CLONES ========================================================= */ document.addEventListener( 'click', function (event) { const target = getEventElement(event); if (!target) { return; } /* * ----------------------------------------- * CURRENCY OPTION CLICK * ----------------------------------------- */ const currencyOption = target.closest( '.wmc-currency-option' ); if ( currencyOption && portal && portal.contains( currencyOption ) ) { event.preventDefault(); event.stopPropagation(); selectCurrency( currencyOption ); return; } /* * ----------------------------------------- * CURRENCY TRIGGER CLICK * ----------------------------------------- */ let trigger = target.closest( '.wmc-custom-switcher' ); /* * Also allow clicking/tapping the Elementor * currency parent/icon area. */ if (!trigger) { const parent = target.closest( '.currency-parent-trigger' ); if (parent) { trigger = parent.querySelector( '.wmc-custom-switcher' ); } } if (trigger) { event.preventDefault(); event.stopPropagation(); /* * Desktop: * hover normally handles opening, * but clicking keeps it open. */ if (hoverDevice.matches) { openPortal(trigger); return; } /* * Mobile / touch: * tap toggles dropdown. */ if ( activeTrigger === trigger && portal && portal.classList.contains( 'active' ) ) { closePortal(); } else { openPortal(trigger); } return; } /* * ----------------------------------------- * OUTSIDE CLICK * ----------------------------------------- */ if ( portal && !portal.contains(target) ) { closePortal(); } }, true ); /* ========================================================= DESKTOP DELEGATED HOVER ========================================================= */ document.addEventListener( 'mouseover', function (event) { if (!hoverDevice.matches) { return; } const target = getEventElement(event); if (!target) { return; } let hoverArea = target.closest( '.currency-parent-trigger' ); let trigger = null; if (hoverArea) { trigger = hoverArea.querySelector( '.wmc-custom-switcher' ); } else { trigger = target.closest( '.wmc-custom-switcher' ); hoverArea = trigger; } if (!trigger || !hoverArea) { return; } /* * Ignore movement between children * inside the same trigger. */ if ( event.relatedTarget instanceof Node && hoverArea.contains( event.relatedTarget ) ) { return; } isHoveringTrigger = true; cancelHide(); openPortal(trigger); }, true ); document.addEventListener( 'mouseout', function (event) { if (!hoverDevice.matches) { return; } const target = getEventElement(event); if (!target) { return; } let hoverArea = target.closest( '.currency-parent-trigger' ); let trigger = null; if (hoverArea) { trigger = hoverArea.querySelector( '.wmc-custom-switcher' ); } else { trigger = target.closest( '.wmc-custom-switcher' ); hoverArea = trigger; } if (!trigger || !hoverArea) { return; } /* * Ignore movement between children * inside same area. */ if ( event.relatedTarget instanceof Node && hoverArea.contains( event.relatedTarget ) ) { return; } isHoveringTrigger = false; scheduleHide(); }, true ); /* ========================================================= KEYBOARD SUPPORT ========================================================= */ document.addEventListener( 'keydown', function (event) { /* * Escape always closes. */ if (event.key === 'Escape') { closePortal(); return; } if ( event.key !== 'Enter' && event.key !== ' ' ) { return; } const target = getEventElement(event); if (!target) { return; } const trigger = target.closest( '.wmc-custom-switcher' ); if (!trigger) { return; } event.preventDefault(); if ( activeTrigger === trigger && portal && portal.classList.contains( 'active' ) ) { closePortal(); } else { openPortal(trigger); } } ); /* ========================================================= UPDATE POSITION ON SCROLL ========================================================= */ window.addEventListener( 'scroll', function () { if ( portal && portal.classList.contains( 'active' ) ) { updatePosition(); } }, { passive: true, capture: true } ); /* ========================================================= UPDATE POSITION ON RESIZE ========================================================= */ window.addEventListener( 'resize', function () { if ( portal && portal.classList.contains( 'active' ) ) { updatePosition(); } } ); /* ========================================================= ELEMENTOR / AJAX / OFF-CANVAS SUPPORT ========================================================= */ let mutationTimer = null; const observer = new MutationObserver( function (mutations) { let needsCheck = false; for ( let i = 0; i < mutations.length; i++ ) { if ( mutations[i].addedNodes && mutations[i].addedNodes.length ) { needsCheck = true; break; } } if (!needsCheck) { return; } if (mutationTimer) { clearTimeout( mutationTimer ); } mutationTimer = setTimeout( function () { prepareAllCurrencySelects(); }, 100 ); } ); /* ========================================================= START ========================================================= */ function start() { createPortal(); prepareAllCurrencySelects(); observer.observe( document.documentElement, { childList: true, subtree: true } ); } if ( document.readyState === 'loading' ) { document.addEventListener( 'DOMContentLoaded', start ); } else { start(); } })();

KONTO

[fk_cart_menu]

WARENKORB

document.addEventListener('DOMContentLoaded', function () { const container = document.querySelector( '.language-parent-trigger' ); if (!container) { return; } const list = container.querySelector( '.trp-switcher-dropdown-list' ); const overlay = container.querySelector( '.trp-shortcode-overlay' ); const arrow = container.querySelector( '.trp-shortcode-arrow' ); function show() { if (list) { list.style.display = 'block'; list.style.visibility = 'visible'; list.style.opacity = '1'; list.style.pointerEvents = 'auto'; list.removeAttribute('hidden'); list.removeAttribute('inert'); } if (overlay) { overlay.classList.add( 'trp-is-open', 'is-open' ); } if (arrow) { arrow.style.transform = 'rotate(180deg)'; } } function hide() { if (list) { list.style.display = 'none'; list.setAttribute('hidden', ''); list.setAttribute('inert', ''); } if (overlay) { overlay.classList.remove( 'trp-is-open', 'is-open' ); } if (arrow) { arrow.style.transform = 'rotate(0deg)'; } } container.addEventListener('mouseenter', show); container.addEventListener('mouseleave', hide); });
(function () { function init() { const cartDrawer = document.querySelector('.open-cart-drawer'); const cartToggleBtn = document.querySelector('#elementor-menu-cart__toggle_button'); if (!cartDrawer || !cartToggleBtn) { setTimeout(init, 300); return; } cartDrawer.addEventListener('click', function (e) { e.preventDefault(); e.stopPropagation(); const clickEvent = new MouseEvent('click', { bubbles: true, cancelable: true, view: window }); cartToggleBtn.dispatchEvent(clickEvent); }); } if (document.readyState === 'loading') { document.addEventListener('DOMContentLoaded', init); } else { init(); } })();
[fk_cart_menu]
document.addEventListener('DOMContentLoaded', function(){ document.querySelectorAll('.custom-cart-hover').forEach(function(container){ container.addEventListener('click', function(){ const toggler = container.querySelector('.fkcart-mini-toggler'); if(toggler){ toggler.click(); // plugin ka original toggle fire kare } }); }); });

Was ist ein Backup?

 

Einfach ausgedrückt ist ein Backup, auch Datensicherung genannt, der Prozess der Sicherung wichtiger Informationen durch Kopieren und Speichern an sicheren Orten wie zusätzlichen Speichermedien (z. B. externen Laufwerken) oder in der Cloud. Dies ermöglicht die Wiederherstellung von Daten und die Wiederaufnahme der täglichen Aktivitäten im Falle eines Hardwareausfalls, eines Cyberangriffs oder eines anderen Ereignisses, das zu einem Datenverlust führt. Ein Backup sollte sowohl für Privatpersonen als auch für Unternehmen ein wichtiger Bestandteil der Datenverwaltung sein.

Warum ist ein Backup wichtig?

 

„Backup – was bedeutet das?“ – diese Frage stellen sich sowohl Privatnutzer als auch Unternehmer. Ein Backup ist nicht nur ein Schutz vor Datenverlust, sondern auch Teil der Geschäftskontinuität im Falle unvorhergesehener Ereignisse. Regelmäßige Backups können wichtige Dokumente, Fotos, Kundendatenbanken und Finanzunterlagen des Unternehmens schützen.

 

Typen der Datensicherung

 

1. Vollbackup, das die umfassendste Form der Datensicherung ist, bei der alle Daten von ausgewählten Medien kopiert werden. Es erfordert die größte Speicherkapazität (was leider in vielen Fällen ein Hindernis in Bezug auf die Kosten des Verfahrens sein kann) und ist zeitaufwendig, hat aber den größten Nutzen, weil es die Daten im größten Umfang schützt.

2. Inkrementelles Backup, bei dem nur die Dateien kopiert werden, die seit der letzten Datensicherung geändert wurden, reduziert die für die Sicherung benötigte Zeit und benötigten Speicherplatz erheblich. Die Wiederherstellung von Daten kann jedoch zeitaufwändiger sein, weil alle inkrementellen Backups seit dem letzten Vollbackup wiederhergestellt werden müssen.

3. Differentielles Backup, bei dem nur die Daten kopiert werden, die seit dem letzten Vollbackup geändert wurden. Sowohl in Bezug auf die Geschwindigkeit der Wiederherstellung als auch den benötigten Speicherplatz rangiert es zwischen einem Voll- und einem inkrementellen Backup.

 

Backup-Lösungen für individuelle Nutzer

 

1. Externe Festplatten sind eine einfache und relativ kostengünstige Lösung für die Datenspeicherung. Ihr Nachteil ist, dass sie verloren gehen oder beschädigt werden können.

2. USB-Sticks eignen sich gut für kleine Datenmengen, die katalogisiert werden können. Wie bei externen Laufwerken besteht jedoch auch hier das Risiko eines physischen Verlusts und damit der Unfähigkeit, auf eine Kopie zuzugreifen.

3. Cloud Speicher wie Google Drive, Dropbox oder iCloud bieten nicht nur die Möglichkeit, Daten zu speichern, sondern auch von jedem Gerät mit einer Internetverbindung darauf zuzugreifen. Diese Option kann besonders für Menschen nützlich sein, die häufig unterwegs sind.

Backup-Software

 

Zu erwähnen sind hier Backup-Programme wie Acronis oder Bitdefender, die auch als Antivirenprogramme fungieren.

Acronis True Image ist eine der umfassendsten Backup- und Cybersicherheitslösungen auf dem Markt, die eine breite Palette von Funktionen bietet, darunter:

  1. Vollständige Image-Backups – die Fähigkeit, dieses Backup zu erstellen, ermöglicht einen umfassenden Schutz des gesamten Systems, einschließlich Apps, Einstellungen und aller Daten.

  2. Aktiver Schutz vor Ransomware – die Software nutzt fortschrittliche KI-Technologien, um verdächtige Änderungen im System zu überwachen und darauf zu reagieren, damit keine Daten durch Ransomware verschlüsselt werden können.

  3. Das Klonen von Laufwerken ermöglicht es dem Nutzer, das gesamte System auf ein neues Laufwerk oder eine neue Partition zu verschieben.

  4. Integriertes Cloud-Backup für zusätzliche Sicherheit und Zugriff auf Daten von jedem Ort der Welt.

Bitdefender Total Security wird besonders für kleine und mittlere Unternehmen empfohlen, die ein zuverlässiges Antivirenprogram in Kombination mit effektiven Tools für die Datensicherung benötigen.

  1. Online-Backup, d. h. die Möglichkeit, Dateien in der Cloud zu sichern, was einen einfachen Zugriff auf die Daten ermöglicht und sie vor Verlust durch Hardwarefehler schützt.

  2. Schutz der Daten und Privatsphäre – bietet fortschrittliche Datenschutzfunktionen wie einen Anti-Tracker, der die Verfolgung von Online-Aktivitäten blockiert, und einen Passwort-Manager, der wichtige Daten sicher speichert.

  3. Sichere Dateien – mit dieser Funktion können Nutzer Verzeichnisse festlegen, die vor Änderungen durch unbefugte Apps geschützt werden sollen.

Lösungen für kleine Unternehmen

 

Kleine Unternehmen müssen sich auf Lösungen konzentrieren, die sowohl ihrem Budget entsprechen als auch ein angemessenes Sicherheitsniveau bieten. Dazu gehören:

1. NAS (Network Attached Storage) ermöglicht eine zentrale Datenverwaltung und den Zugriff für mehrere Benutzer über ein lokales Netzwerk.

2. Wie bei Privatnutzern ist auch ein Cloud-Backup eine gute Lösung, aber hier empfehlen wir Lösungen wie Microsoft OneDrive for Business oder Amazon AWS mit skalierbaren Optionen mit automatischem Backup und erweitertem Datenschutz.

 

Lösungen für große Unternehmen

 

Aufgrund der meist riesigen Datenmengen benötigen große Unternehmen umfassende Lösungen, die ein hohes Sicherheitsniveau gewährleisten. Dazu gehören zum Beispiel:

1. Server-Backup, d. h. große und leistungsfähige Server, die speziell für die Datensicherung konzipiert sind und sich oft in verschiedenen Rechenzentren befinden, um den Schutz zu erhöhen. Dies gilt beispielsweise für den Fall, dass ein Raum abbrennt, überflutet wird oder andere Probleme auftreten, z. B. durch Stromausfälle usw.

2. Off-Site-Backup, das im Grunde genommen eine Ergänzung zu den oben erwähnten, an einem anderen Ort aufbewahrten Backups ist, was für den Datenschutz bei Ereignissen, die den Hauptsitz des Unternehmens betreffen, von entscheidender Bedeutung ist.

3. Disaster Recovery as a Service (DraaS) ist ein von externen Unternehmen angebotener Dienst, der nicht nur die Datensicherung verwaltet, sondern auch bei der schnellen Wiederherstellung von Daten nach Ausfällen hilft.

 

Zusammenfassung

 

“Was ist ein Backup?“ – die Antwort auf diese Frage sollte jetzt klar sein! Ganz gleich, ob Sie ein Privatnutzer sind oder Unternehmensdaten verwalten, geeignete Backup-Lösungen sind für den Schutz wertvoller Informationen unerlässlich. Regelmäßige Backups sind der beste Schutz vor unerwarteten Ereignissen, die zu Datenverlust führen können.

Schreiben Sie einen Kommentar

Wählen Sie Ihre Währung