Typically you will keep a Box2D body as a member variable of your entity, and relay all the position information to that body. For example:
class Entity {
b2Body* body;
};
If you also want the Box2D body to have a reference to the entity that owns it, you can set that in the 'user data' of the body:
body->SetUserData( this );
Instead of duplicating and syncing, the entity can just use information from the Box2D body:
b2Vec2 Entity::GetPosition() { return body->GetPosition(); }
float Entity::GetAngle() { return body->GetAngle(); }
void Entity::SetPosition( b2Vec2 p ) { body->SetTransform(p, body->GetAngle()); }
void Entity::SetAngle( float a ) { body->SetTransform(body->GetPosition(), a); }
This may also be useful: https://www.iforce2d.net/b2dtut/drawing-objects